2012-07-07 44 views
1

它顯示07-07 16:34:48.270:W/System.err的(6050):複製產生java.io.IOException 我已經給出的許可機器人複製文件顯示錯誤

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

文件複製代碼:

File file = new File("/mnt/sdcard/infobooks/"); 

      if (file.exists() == false) { 
       file.mkdirs(); 
      } 

      InputStream myInput = this.getAssets().open("Book4.pdf"); 
      String outFileName = Environment.getExternalStorageDirectory()+"/infobooks/Book4.pdf"; 
      File file2=new File(outFileName); 
      file2.createNewFile(); 

      FileOutputStream myOutput = new FileOutputStream(outFileName); 

      // transfer bytes from the inputfile to the outputfile 
      byte[] buffer = new byte[1024]; 
      int length; 
      while ((length = myInput.read(buffer)) > 0) { 
       myOutput.write(buffer, 0, length); 
      } 

      // Close the streams 
      myOutput.flush(); 
      myOutput.close(); 
      myInput.close(); 
+0

在這裏發佈您的整個日誌。 – 2012-07-07 11:16:18

+0

嘗試字符串outFileName ='Environment.getExternalStorageDirectory()getAbsolutePath()+ 「/ infobooks/Book4.pdf」;'代替'字符串outFileName = Environment.getExternalStorageDirectory()+ 「/ infobooks/Book4.pdf」;' – 2012-07-07 11:16:25

+0

我調試我的代碼錯誤是在while((length = myInput.read(buffer))> 0)this但是我不不是什麼它 – Youddh 2012-07-07 11:21:06

回答

0

從它的聲音,你的錯誤是不相關的寫入外部存儲但是從資產,而閱讀。資產目錄中是否存在文件「Book4.pdf」?它有多大?你在運行什麼版本的Android?曾經有一段時間,Android在使用壓縮時對資產的文件大小有限制。在Android 2.3之前,AssetManager無法讀取大型壓縮文件(其中大的意思是在未壓縮狀態下超過1MB)。解決方法是不要壓縮文件(通過給它一個aapt跳過壓縮的擴展,如jpg或png),轉到命令行構建,或將文件拆分成更小的塊,然後在設備上重新構建它們。

如果沒有一個完整的堆棧跟蹤,但是,我們不能真正知道錯誤的原因是什麼。

+0

當我嘗試使用不同的文件,然後它工作正常,資產的文件大小是否有限制? (Book4.pdf文件大小爲4MB) – Youddh 2012-07-09 02:33:34

+1

如果您使用2.3以前版本的Android,則限制爲1MB。如果您使用的是Android的更高版本,則沒有此限制(我知道)。 – 2012-07-09 03:57:44

+0

是的,你是正確的我正在使用2.2,這是我的問題,謝謝 – Youddh 2012-07-09 05:01:10