使用java.io.File时发生NullPointerException [英] NullPointerException when using java.io.File

查看:243
本文介绍了使用java.io.File时发生NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用该程序对D:\驱动器中的所有文件进行计数,但是在运行它时会引发异常.

I am trying to use this program to count all the files in the D:\ drive but it is throwing an exception when I run it.

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可以看到看起来像目录的东西,但是无法列出它(想到连接点)

File.listFiles() is not guaranteed to return a non-null value. This tends to occur (from my experience) because Java could see what looked like directory, but could not list it (Junctions come to mind)

这篇关于使用java.io.File时发生NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆