2016-01-28 88 views
1

我試圖從資產文件夾中將文件複製到應用程序的數據目錄/內部存儲。getAssets()。打開 - 打開失敗:EROFS(只讀文件系統)

該文件保存在資產文件夾中,文件名爲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)

+0

第一行的「新文件()」可能是問題的原因,而不是第四行的open()。 – neuhaus

回答

0

創建OutputStream這樣的:

OutputStream outputStream = new FileOutputStream(file); 
0

嘗試此代碼:

PackageManager m = getPackageManager(); 
    PackageInfo p = m.getPackageInfo(getPackageName();, 0); 
    String dataDir = p.applicationInfo.dataDir; 

    OutputStream outputStream = new FileOutputStream(dataDir +"/eng.traineddata"); 
相關問題