如何从res / raw按名称读取文件
我想从文件夹res / raw /中打开一个文件。 我绝对相信该文件存在。 要打开文件,我试过了
File ddd = new File("res/raw/example.png");
命令
ddd.exists();
产生FALSE 。 所以这种方法不起作用。
试
MyContext.getAssets().open("example.png");
以getMessage()“null”结束。
简单使用
R.raw.example
是不可能的,因为文件名只在运行时被认为是一个string。
为什么访问文件夹/ res / raw /中的文件非常困难?
借助于给定的链接,我能够自己解决问题。 正确的方法是获取资源ID
getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION", "raw", getPackageName());
为了得到它作为一个InputStream
InputStream ins = getResources().openRawResource( getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION", "raw", getPackageName()));
这里是从原始文件夹中获取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(); }
你可以使用getResources().openRawResource(R.raw.myfilename)
来读取raw / res中的文件getResources().openRawResource(R.raw.myfilename)
。
但是有一个IDE限制,您使用的文件名只能包含小写字母数字字符和点。 所以文件名如XYZ.txt
或my_data.bin
将不会在R中列出。