我在數據創建文件/數據/ mypackage的/文件/:權限被拒絕:文件創建在... /文件
file = new File(getFilesDir() + "/file.txt");
我絕對相信,該文件被創建。
它創建後我打電話:
file.canWrite();
,結果是正確的。
當我嘗試使用該文件
我得到:「權限被拒絕」。
在Eclipse的DDMS,這個文件的權限是這樣的:
-rw-------
誰能幫助嗎?
謝謝
我在數據創建文件/數據/ mypackage的/文件/:權限被拒絕:文件創建在... /文件
file = new File(getFilesDir() + "/file.txt");
我絕對相信,該文件被創建。
它創建後我打電話:
file.canWrite();
,結果是正確的。
當我嘗試使用該文件
我得到:「權限被拒絕」。
在Eclipse的DDMS,這個文件的權限是這樣的:
-rw-------
誰能幫助嗎?
謝謝
最簡單的方法來打開文件(並在同一時間創建它)將使用openFileOutput("file.txt", MODE_PRIVATE)
方法。
這可以確保文件只能被您的應用程序讀取(與您目前使用的文件相同),並且會返回FileOutputStream
,您可以開始寫入文件。
權限對我來說看起來是正確的。每個應用程序都以不同的用戶身份運行,因此只能訪問它自己的文件。
當你說「我嘗試使用該文件」時,你是什麼意思?你可以發佈代碼,因爲我認爲這是問題所在。
當我說「我嘗試使用該文件」時,我的意思是我想要安裝它。 實際上,我正在下載一個.apk並將其所有內容放入此文件中。由於內存空間的限制,我必須檢查是否可以在SD卡上創建此文件。如果沒有,我必須在'/ data/data/myPackage/files /'文件夾中創建它。 – Tsimmi 2010-01-08 12:38:08
如果您知道正在使用文件()創建的文件,你不希望使用openFileOutput(),那麼試試這個:
FileWriter fWriter;
try {
fWriter = new FileWriter(file, true);
fWriter.write("hello");
fWriter.close();
} catch (IOException e) {
// log error
}
我發現,對「/數據的寫/ data/myPackage/files /',需要設置
權限。
有MODE_WORLD_WRITEABLE,
那是一個與這種情況下的利益,
但即使有此權限集,我仍然有錯誤。
我想:「也許我需要的是一個EXECUTE許可...」。
還有就是API
中沒有這樣的權限,但即使我試圖把一個3 mode參數
(MODE_WORLD_WRITEABLE是= 2),
和...它的工作!
但是,當我寫SD卡與權限集,
我得到一個錯誤,以及,
所以我寫不同的兩個文件夾。
int permission = 3;
if (whereToWrite == WRITE_TO_DATA_FOLDER) {
FileOutputStream fos = openFileOutput(file.getName(), permission);
buffOutStream = new BufferedOutputStream(fos);
} else if (whereToWrite == WRITE_TO_SD_CARD){
buffOutStream = new BufferedOutputStream(new FileOutputStream(file));
}
順便說一下,
MODE_WORLD_WRITEABLE是錯誤的,
MODE_WORLD_WRITABLE是正確的。
確保您具有寫入文件的正確權限。在您的清單文件中,包含此行
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />.
不是。正如問題中給出的那樣,'data/data/myPackage/files /'指的是特定於應用程序的內部存儲,並且不需要任何特定的權限。你所指的權限只處理'/ sdcard/mnt/...'文件 – 2013-10-28 20:39:59
我一直在努力研究nullpointerexception,找不到文件,幾個小時的問題。我已經從模擬器轉移到實際的設備。在模擬器下面的工作:
BufferedWriter osw = new BufferedWriter(new FileWriter(path));
當我直接去設備雖然,我得到了例外。
Neelesh Gajender完美地解答了答案。增加::
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在android manifest中完全解決了這個問題。我很感謝Neelesh和Kudos!
NB。 Context對象上有openFileOutput和MODE_PRIVATE。 – teedyay 2010-03-19 15:54:04