【问题标题】:getAssets().open - open failed: EROFS (Read-only file system)getAssets().open - 打开失败:EROFS(只读文件系统)
【发布时间】:2016-01-28 13:58:57
【问题描述】:

我正在尝试将文件从资产文件夹复制到应用程序的数据目录/内部存储。

文件保存在 assets 文件夹中,文件名为 eng.traineddata

这是我正在使用的代码:

    File file = new File(getFilesDir(), "eng.traineddata");
    if (!file.exists()) {
        try {
            InputStream inputStream = getAssets().open("eng.traineddata");
            OutputStream outputStream = new FileOutputStream("eng.traineddata");
            byte[] buffer = new byte[5120];
            int length = inputStream.read(buffer);
            while (length > 0) {
                outputStream.write(buffer, 0, length);
                length = inputStream.read(buffer);
            }
            outputStream.flush();
            outputStream.close();
            inputStream.close();
        } catch (IOException e) {
            Log.e("APP_INITIALIZER", e.getMessage());
        }
    }

但我总是在 logcat 中收到这条消息:eng.traineddata: open failed: EROFS (Read-only file system)

【问题讨论】:

  • 第一行的“new File()”可能是问题的原因,而不是第四行的 open()。

标签: android


【解决方案1】:

像这样创建你的OutputStream

OutputStream outputStream = new FileOutputStream(file);

【讨论】:

    【解决方案2】:

    试试这个代码:

        PackageManager m = getPackageManager();
        PackageInfo p = m.getPackageInfo(getPackageName();, 0);
        String dataDir = p.applicationInfo.dataDir;
    
        OutputStream outputStream = new FileOutputStream(dataDir +"/eng.traineddata");
    

    【讨论】:

      猜你喜欢
      • 2014-06-01
      • 2015-01-22
      • 1970-01-01
      • 2014-04-19
      • 2019-09-30
      • 2012-12-08
      • 2016-01-23
      • 2015-06-08
      • 2015-01-02
      相关资源
      最近更新 更多