如何从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.txtmy_data.bin将不会在R中列出。