FileDescriptor:error android.system.ErrnoException:open failed:ENOENT(没有这样的文件或目录)

时间:2016-09-06 11:35:52

标签: java android

我知道这是一个非常常见的问题,但是我在努力获取输出。以下是我的代码:

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();
    }

错误显示该目录不存在。有人能告诉我出了什么问题吗?

2 个答案:

答案 0 :(得分:2)

'use strict'; angular.module('identicaApp.mainPage', [ 'ngRoute', 'identicaApp.common' ]) // Here you must inject your 'ROOT_PATH' constant .config(['$routeProvider', 'ROOT_PATH', function($routeProvider, ROOT_PATH) { $routeProvider.when('/main', { templateUrl: ROOT_PATH + 'main_page/main_page.html', // You must reference it by its name (ROOT_PATH) controller: 'MainPageCtrl' }); }]) .controller('MainPageCtrl', [function() { }]); 是OS X计算机上文件的路径。 AFAIK,这个星球上没有Android设备,根目录下有一个/Users/JackPowell/AndroidStudioProjects/Shaker/app/src/main/res/raw/na.mp3目录。

我的猜测是你试图读取原始资源。在这种情况下,请使用/Users及其Resources方法,传入openRawResource()。您可以通过R.raw.na从任何Resources获取Context个对象(例如您的活动)。

答案 1 :(得分:0)

这是我的解决方案:

    AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(R.raw.na);
     try {
        mPlayer.setDataSource(afd.getFileDescriptor());
    } catch (IOException e) {
        e.printStackTrace();
    }
    mPlayer.prepare;
    mPlayer.setOnPreparedListener(this);