openRawResourceFd не работает на Android - PullRequest
5 голосов
/ 22 ноября 2011

Я пишу свое первое приложение для Android и пытаюсь прочитать файл ресурса res/raw.

Следующий код throws a FileNotFound Исключение:

AssetFileDescriptor fd = res.openRawResourceFd(R.raw.myfile);

но эта строка кода работает:

InputStream stream = res.openRawResource (R.raw.myfile);

Мне нужен AssetFileDescriptor, чтобы определить длину файла. Есть идеи, почему это не работает?

Ответы [ 3 ]

5 голосов
/ 22 января 2014

Вы можете сделать это так:

FileDescriptor fd = getResources().openRawResourceFd(R.raw.rawResourceId).getFileDescriptor();

Блок try / catch не требуется.

1 голос
/ 09 ноября 2015

Это работает;

AssetFileDescriptor afd = res.openRawResourceFd(R.raw.rawResourceId);
0 голосов
/ 22 ноября 2011

Переместите myfile в папку активов и попробуйте это

try{
    AssetFileDescriptor descriptor = getAssets().openFd( "myfile" );
    FileDescriptor fd = descriptor.getFileDescriptor();
}
catch(Exception)
{

}

Или вы можете попробовать открыть файл RAW из ресурсов / raw-фодера с помощью этого кода:

FileDescriptor fd = getResources().openRawResourceFd(R.raw.myfile).getFileDescriptor();
...