Java File isDirectory 、isFile 都返回false的問題


形如:
三級目錄 A(Dir)-》B(Dir)-》C(File)

①File child = new File(children[i]);

無論File是目錄還是文件,file.isDirectory() 、file.isFile() 都會返回false
②File child = new File(dir, children[i]);

傳入父目錄,就可以正確識別 child 的類型了。

=======================================

Demo: 只刪除文件,不刪除文件夾

private static boolean deleteDir(File dir) {
    if (dir == null) {
        return false;
    }
    if (dir.isDirectory()) {
        String[] children = dir.list();
        int len = children.length;
        if (len == 0) {
            return true;
        }
        for (int i = 0; i < len; i++) {
            File child = new File(dir, children[i]);
            boolean success;
            if (child.isDirectory()) {
                if (child.list().length == 0) {
                    return true;
                }
                success = deleteDir(child);
            } else {
                success = child.delete();
            }
            if (!success) {
                return false;
            }
            if (i == len - 1) {
                return true;
            }
        }
    }
    return dir.isDirectory();
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM