上失敗當我嘗試在應用程序內部存儲器下創建目錄結構時(例如/data/data/[pkgname]/x/y/z...
),我看到幾次崩潰。在應用程序內部存儲器上的mkdirs()在我的應用程序中的Android
這裏是失敗的代碼:
File clusterDirectory = new File(MyApplication.getContext().getFilesDir(), "store");
File baseDirectory = new File(clusterDirectory, "data");
if (!baseDirectory.exists()) {
if (!baseDirectory.mkdirs()) {
throw new RuntimeException("Can't create the directory: " + baseDirectory);
}
}
我的代碼拋出試圖創建以下路徑時除外:
java.lang.RuntimeException: Can't create the directory: /data/data/my.app.pkgname/files/store/data
我的清單指定權限<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
,即使它不應該對此目的是必要的(由於Google Maps Android API v2,我的應用程序實際上是必需的)。
它似乎與手機沒有關係,因爲我在舊手機和新手機上都得到了這個例外(最新的崩潰報告是Android 4.3的Nexus 4)。
我的猜測是,目錄/data/data/my.app.pkgname
首先不存在,但mkdirs()由於權限問題無法創建它,這可能嗎?
任何提示?
感謝
謝謝,這是很好的在應用程序存儲創建目錄的第一級(在我的情況「存儲」),但什麼關於嵌套目錄?在第一級的返回文件上使用mkdirs()是否安全? – Venator85
是的,你可以試試。 –
@ Venator85查看我更新的答案。我添加了一個示例代碼來創建嵌套的目錄。 –