java - 使用 java.io.File 时出现 NullPointerException

标签 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 ++;
                }
            }
        }
    }
}

最佳答案

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

关于java - 使用 java.io.File 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11643011/

相关文章:

android - 设置 Eclipse 和 Java JDK

java - 为什么可以从已经关闭的 ByteArrayOutputStream 中读取数据?

java - Axis2 文件分块上传

java - 使用 Android Studio Facebook SDK

java - 合并多个 if 语句

java - 无法给变量赋值

java - 写入 OutputStream 时测量中间吞吐量 [或] 为什么 write() 会阻塞,而 read() 不会?

java - 如何在while循环中使用String方法

Java - 如何确定一个目录是否正在被另一个进程使用?

java - JTable boolean 类