2013-03-22 122 views
1

好了,到目前爲止,所有的我發現答案似乎是由人誰不知道答案來回答到... 這應該是一個簡單的(免費爲代表你耶):Android - 如何從res文件夾打開不同的文件?

我有一個文件在res/raw /被稱爲overworld_a.tmx

我需要使用路徑作爲字符串加載它,然後將文件名添加到字符串中,因爲它會變化。

像這樣:

String mapName = "overworld_a.tmx"; 
    try { 
     TMXMapReader mapReader = new TMXMapReader(); 
     map = mapReader.readMap("raw/"+mapName); 
    } catch (Exception e) { 
     System.out.println("Error while reading the map:\n" + e.getMessage()); 
     return; 
    } 

問題是,這顯然是行不通的....簡單的問題是,什麼是該文件的相對路徑?

如果這不是一個可能性:

複雜的問題是,如何從res文件夾及其子打開不同的文件嗎?

使用openRawResource從原始文件讀取overworld_a.tmxInputStream

+0

你檢查http://developer.android.com/guide/topics/resources/providing-resources.html - 要打開這些資源與原料InputStream,使用資源ID調用Resources.openRawResource(),它是R.raw.filename? – sandrstar 2013-03-22 05:53:58

+0

爲什麼你在使用資源文件夾時使用res?使用資源是必要的? – Hein 2013-03-22 05:54:04

+0

我無法使用將我的文件轉換爲流的命令,因爲我需要放置的參數是文件名...不是流。這就是爲什麼我不使用openRawResource或資產的事情......這甚至有可能嗎? – 2013-03-22 06:00:15

回答

1

您可以從res/raw目錄爲已讀overworld_a.tmx

String mapName = "overworld_a"; //<< just pass name without file extension 

resID = getResources().getIdentifier(mapName, "raw", getPackageName()); 
InputStream inputStream = getResources().openRawResource(resID); 

2.獲取ByteArrayOutputStreaminputStream

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
//... your code for reading byteArray from inputStream 

通行證byteArrayOutputStreammapReader.readMap

TMXMapReader mapReader = new TMXMapReader(); 
map = mapReader.readMap(byteArrayOutputStream); 
//..... 
+0

好的,所以傳遞一個文件名的路徑是不可能的,明白了。 – 2013-03-22 06:06:01

+0

@DominicGrenier:可以通過名稱從res/raw文件夾中獲取文件 – 2013-03-22 06:07:06

+0

@DominicGrenier:查看我的編輯答案 – 2013-03-22 06:10:04