黑馬程序員-Java列出盤符下的所有文件和文件名錯誤

----------- android培訓java培訓、java學習型技術博客、期待與您交流! ------------

/**

 * 列出目錄下面所有的文件和文件夾

 * */

public class AllFileTest {

    /**

     * @param args

     */

    public static void main(String[] args) {

        try {

            File file = new File("m:\\");

            showFile(file);//18

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

    public static void showFile(File file) {

        try {

            if (file.isDirectory()) {

                System.out.println("Directory: " + file.getPath());

                File files[] = file.listFiles();

                for (int i = 0; i < files.length; i++) { //31

                    showFile(files[i]);//33

                }

            } else {

                System.out.println("File" + file.getPath());

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

    }

}


文件名和文件已經全部列出來了,沒有問題,但是最後爲什麼還有這個異常呢?

/*

java.lang.NullPointerException

    at io.AllFileTest.showFile(AllFileTest.java:31)

    at io.AllFileTest.showFile(AllFileTest.java:33)

    at io.AllFileTest.main(AllFileTest.java:18)

*/

關鍵是file.listFiles();是有可能返回null的(表示沒有任何子目錄或文件),所以你在for循環之前需要先判斷if(files != null) ,返回null的情況是該目錄中沒有子目錄也沒有文件 

listFiles

public File[] listFiles()

返回一個抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中的文件。 

如果此抽象路徑名不表示一個目錄,那麼此方法將返回 null。否則返回一個 File 對象數組,每個數組元素對應目錄中的每個文件或目錄。


----------------------- android培訓java培訓、java學習型技術博客、期待與您交流! ----------------------



發佈了27 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章