android上的openRawResourceFd失败

WOP*_*OPR 5 android file-descriptor android-assets

我正在编写我的第一个Android应用程序,而我正在尝试读取res/raw资源文件.

以下代码throwsFileNotFound例外:

AssetFileDescriptor fd = res.openRawResourceFd(R.raw.myfile);
Run Code Online (Sandbox Code Playgroud)

但这行代码有效:

InputStream stream = res.openRawResource (R.raw.myfile);
Run Code Online (Sandbox Code Playgroud)

我需要它AssetFileDescriptor来确定文件的长度.任何想法为什么它不起作用?

Che*_*ech 5

你可以这样做:

FileDescriptor fd = getResources().openRawResourceFd(R.raw.rawResourceId).getFileDescriptor();
Run Code Online (Sandbox Code Playgroud)

不需要try/catch块.


Paw*_*wan 0

将您的 myfile 移至 asset 文件夹并尝试此操作

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

}
Run Code Online (Sandbox Code Playgroud)

或者您可以尝试使用以下代码从 resources/raw foder 打开 RAW 文件:

FileDescriptor fd = getResources().openRawResourceFd(R.raw.myfile).getFileDescriptor();
Run Code Online (Sandbox Code Playgroud)

  • 这不是永久的解决方案,因为在资产文件夹中我收到文件被压缩错误,我需要将文件放入原始目录中只能看到此线程http://stackoverflow.com/questions/6186866/java-io-filenotfoundexception-该文件无法作为文件描述符打开 (2认同)