繁体   English   中英

扫描目录时java.lang.NullPointerException

[英]java.lang.NullPointerException when scanning directories

我有一个非常简单的方法来扫描目录结构以执行检查。 扫描看起来像这样:

File file = new File(initpath);

for(File hex : file.listFiles(new HexagonNameFilter())) {

    for(File wall : hex.listFiles()) {

        for(File shelf : wall.listFiles()) {

            for(File book : shelf.listFiles()) {

                // Perform some actual work
            }
        }
     }
 }

在程序执行期间多次调用该方法。

不一致(意思是,在扫描过程中的一些不可预测的点),我得到一个java.lang.NullPointerException,其中堆栈跟踪指向其中一个for语句(它的一个也是不一致的)。 这不具有启发性。 我正在考虑将FilenameFilters传递给三个listFiles()调用,但无法看到这将如何帮助解决问题。

您应该验证是否在目录上调用此方法。 否则,它返回null。

listFiles

public File [] listFiles()

返回一个抽象路径名数组,表示此抽象路径名表示的目录中的文件。

如果此抽象路径名不表示目录,则此方法返回null 否则返回一个File对象数组,一个用于目录中的每个文件或目录。 表示目录本身的路径名和目录的父目录不包含在结果中。 每个生成的抽象路径名都是使用File(File,String)构造函数从此抽象路径名构造的。 因此,如果此路径名是绝对的,那么每个结果路径名都是绝对的; 如果此路径名是相对的,则每个结果路径名将相对于同一目录。

无法保证结果数组中的名称字符串将以任何特定顺序出现; 特别是,它们不保证按字母顺序出现。

返回:一个抽象路径名数组,表示此抽象路径名表示的目录中的文件和目录。 如果目录为空,则数组将为空。 如果此抽象路径名不表示目录,或者发生I / O错误,则返回null。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM