2013-03-22 55 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

相关问题