我想从文件夹res/raw/打开一个文件。我绝对确定这个文件是存在的。打开我尝试过的文件
File ddd = new File("res/raw/example.png");
该命令
ddd.exists();
生成FALSE。所以这个方法不起作用。
正在尝试
MyContext.getAssets().open("example.png");
在异常中结束,getMessage()为“null”。
简单地使用
R.raw.example
这是不可能的,因为文件名仅在运行时被识别为字符串。
为什么访问/res/raw/文件夹中的文件会如此困难?
发布于 2013-04-11 03:18:42
在给定链接的帮助下,我能够自己解决这个问题。正确的方法是使用以下命令获取资源ID
getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
"raw", getPackageName());
将其作为InputStream获取
InputStream ins = getResources().openRawResource(
getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
"raw", getPackageName()));
发布于 2013-04-10 05:27:50
下面是从raw文件夹中获取XML文件示例:
InputStream XmlFileInputStream = getResources().openRawResource(R.raw.taskslists5items); // getting XML
然后,您可以:
String sxml = readTextFile(XmlFileInputStream);
在以下情况下:
public String readTextFile(InputStream inputStream) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
byte buf[] = new byte[1024];
int len;
try {
while ((len = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, len);
}
outputStream.close();
inputStream.close();
} catch (IOException e) {
}
return outputStream.toString();
}
发布于 2013-07-12 06:35:24
您可以使用getResources().openRawResource(R.raw.myfilename)
读取raw/res中的文件。
但IDE有一个限制,即您使用的文件名只能包含小写字母数字字符和点。因此,像XYZ.txt
或my_data.bin
这样的文件名不会在R中列出。
https://stackoverflow.com/questions/15912825
复制相似问题