使用java.io.File时出现NullPointerException

Cro*_*ley 1 java java-io

我试图使用这个程序来计算D:\驱动器中的所有文件,但是当我运行它时它会抛出异常.

package lmh;

import java.io.File;

public class FileList {

    static int fileNum = 0;
    static int directoryNum = 0;
    static int cannotRead = 0;

    public static void main(String[] args) {
        File f = new File("e:/");
        printFileStructure(f);
        System.out.println("result:");
        System.out.println("file number?" + fileNum);
        System.out.println("directory number?" + directoryNum);
        System.out.println("cannot rend:" + cannotRead);
    }

    public static void printFileStructure(File f) {
        File[] files = f.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()) {
                if (files[i].canRead()) {
                    fileNum++;
                    System.out.println(files[i].getName());
                } else {
                    cannotRead ++;
                } 
            }
            else if (files[i].isDirectory()) {
                if (files[i].canRead()) {
                    directoryNum++;
                    printFileStructure(files[i]);
                } else {
                    cannotRead ++;
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mad*_*mer 5

File.listFiles()不保证返回非null值.这往往会发生(根据我的经验),因为Java可以看到看起来像目录的内容,但无法列出它(连接点浮现在脑海中)