FileDescriptor:错误android.system.ErrnoException:打开失败:ENOENT(没有这样的文件或目录)
问题描述:
我知道这是一个相当普遍的问题,但是我正在努力获取输出。以下是我的代码:FileDescriptor:错误android.system.ErrnoException:打开失败:ENOENT(没有这样的文件或目录)
try {
FileInputStream fileInputStream = new FileInputStream(new File("/Users/JackPowell/AndroidStudioProjects/Shaker/app/src/main/res/raw/na.mp3"));
FileDescriptor fd = fileInputStream.getFD();
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
错误显示该目录不存在。有人能告诉我什么是错的吗?
答
/Users/JackPowell/AndroidStudioProjects/Shaker/app/src/main/res/raw/na.mp3
是OS X机器上文件的路径。 AFAIK,在这个星球上有零个Android设备,其/Users
目录不在根目录。
我的猜测是你正在尝试阅读原始资源。在这种情况下,请使用Resources
及其openRawResource()
方法,并传入R.raw.na
。您可以通过getResources()
从任何Context
(例如您的活动)获得Resources
对象。
答
这是我的解决方案:
AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(R.raw.na);
try {
mPlayer.setDataSource(afd.getFileDescriptor());
} catch (IOException e) {
e.printStackTrace();
}
mPlayer.prepare;
mPlayer.setOnPreparedListener(this);
您好,感谢答复。你介意给我一个示例解决方案作为未来的参考吗?谢谢 – JackPowell
@JackPowell:https://github.com/commonsguy/cw-omnibus/blob/v7.6/WidgetCatalog/ExpandableListView/app/src/main/java/com/commonsware/android/wc/elv/MainActivity.java #L43 – CommonsWare