androidfile-ioresources

How to read file from res/raw by name


I want to open a file from the folder res/raw/. I am absolutely sure that the file exists. To open the file I have tried

File ddd = new File("res/raw/example.png");

The command

ddd.exists(); 

yields FALSE. So this method does not work.

Trying

MyContext.getAssets().open("example.png");

ends up in an exception with getMessage() "null".

Simply using

R.raw.example

is not possible because the filename is only known during runtime as a string.

Why is it so difficult to access a file in the folder /res/raw/ ?


Solution

  • With the help of the given links I was able to solve the problem myself. The correct way is to get the resource ID with

    getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
                                 "raw", getPackageName());
    

    To get it as a InputStream

    InputStream ins = getResources().openRawResource(
                getResources().getIdentifier("FILENAME_WITHOUT_EXTENSION",
                "raw", getPackageName()));