2012-02-21 143 views
1
File mediaDir = new File("media"); 
if (!mediaDir.exists()){ 
    mediaDir.createNewFile(); 
    mediaDir.mkdir(); 

} 

File f = new File("/data/data/com.test.image/files/media/Voucher.jpg"); 
f.createNewFile(); 
FileOutputStream fos = new FileOutputStream(f); 
fos.write(b); 
fos.close(); 

嘗試寫在手機內部存儲器中的文件,但它拋出一個錯誤:產生java.io.IOException:只讀文件系統產生java.io.IOException:只讀文件系統

回答

2

猜測/數據/數據不是外部存儲。您需要具有root權限才能寫入/ data目錄。請參閱Data directory has no read/write permission in Android

+0

我在AndroidManifest.xml中添加了 2012-02-21 06:09:26

+0

是你的手機根植? – user936414 2012-02-21 06:15:59

+0

如果它沒有根,/ data將沒有寫入權限。請參閱http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app – user936414 2012-02-21 06:21:34

0

使用mediaDir.mkdirs();而不是mediaDir.mkdir();您也必須要求WRITE_EXTERNAL_STORAGE權限

+0

同樣的問題..它引發相同的錯誤....我甚至添加了<使用權限android:name =「android.permission.WRITE_EXTERNAL_STORAGE」/> <使用權限android:name =「android.permission。 WRITE_INTERNAL_STORAGE「/ – 2012-02-21 05:54:48

0

您正在Android系統的根目錄中創建文件,但沒有應用程序被允許。

要創建特定於您的應用程序的目錄,請使用getDir(String dirName, int mode)而不是new File("media")。通過僅呼叫,您可以創建媒體目錄並使用它。

沒有必要做這麼多的東西你在上面的代碼中做什麼。也不需要在清單中給予任何許可。

+2

雖然您已接受答案,但我不認爲這就是您要找的答案。/data/data是安裝所有應用程序包的目錄。您的應用程序包也將保存在此目錄(/ data/data /)中。因此可以說你的包名是** com.test.image **,在這種情況下,你的媒體目錄將被創建,其路徑將是/data/data/com.test.image/app_media。因此,如果您使用getDir方法的活動/上下文,則可以直接訪問此/ data/data文件夾並寫入文件。無需在清單中寫入權限。 – AndroDev 2012-02-21 08:35:33

相關問題