這幾天做一個功能需要在手機上建立一個檔案夾,然後往裡面儲存一些檔案,首先得考慮使用者有沒有sdcard,如果有就在sdcard上建立一個指定的檔案夾,如果沒有則在你的工程所在的目錄“/data/data/你的包名”下建立檔案夾。用到的方法是:
首先判斷sdcard是否插入
String status = Environment.getExternalStorageState();
if (status.equals(Environment.MEDIA_MOUNTED)) {
return true;
} else {
return false;
}
然後根據是否插入狀態指定目錄
if (SdcardHelper.isHasSdcard()) {
sDir = SDCARD_DIR;
} else {
sDir = NOSDCARD_DIR;
}
然後是建立檔案夾
File destDir = new File(sDir);
if (!destDir.exists()) {
destDir.mkdirs();
}
問題是:剛開始我的檔案夾的目錄是按照windows方式的例如"\sdcard\tempdir"結果運行後也不報錯但是怎麼也建立不了檔案夾,後面想到應該是按linux格式的目錄,改為"/sdcard/tempdir"後即可成功建立。
因為之前建立檔案都是按照windows方式例如"\sdcard\test.txt"調用
new File("\\sdcard\\test.txt").createNewFile();建立而且可以成功,所以目錄就沒考慮。
經驗證建立檔案夾使用windows或者linux的目錄結構都可以,而目錄的話必須用linux的格式。
註:如果是1.6版本的話,需要註冊sdcard許可權才能正常建立檔案夾及寫入檔案. 2.2以上不需要
<!--往sdcard中寫入資料的許可權 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!--在sdcard中建立/刪除檔案的許可權 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>