今天出現了一個No such file or directory問題,debug跟蹤發現是file.createNewFile() 出現的,檢查一下幾項:
1.AndroidManifest中是否添加了
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.若手機是7.0以上,檢查是否做了動態權限申請
3.進入設置中查看權限是否真實允許
檢查完畢後發現不是這些問題,然後根據一位網友的提示,發現出現這個錯誤的可能性在於,文件夾是否已存在,能不能在沒有這個文件夾的情況下,給完整路徑直接創建文件(文件夾順帶創建)。結果是否定的,在文件夾不存在的情況下,直接創建文件會出現No such file or directory問題。
記錄問題,以作以後參考。
附代碼:
先創建文件夾
public static String getAppDir() { String local_file = Environment.getExternalStorageDirectory().getAbsolutePath() + FILE_PATH; //這裏必須要先創建文件夾,若不創建文件夾,會導致file.createNewFile()出現No such file or directory File f = new File(local_file); if(!f.exists()){ f.mkdirs(); } return local_file; }
在根據文件夾創建文件
/** * 下載文件 * * @param fileUrl 文件url * @param destFileDir 文件名:test.docx */ public <T> void downLoadFile(String fileUrl, final String destFileDir, final ReqProgressCallBack<T> callBack) { final File file = new File(FileUtils.getAppDir(), destFileDir); if (file.exists() && file.length() > 0) { successCallBack((T) file, callBack); return; } if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } ...... }