file.createNewFile() 出現 No such file or directory

今天出現了一個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();
            }
        }

        ......

    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章