-1

我用一个简单的 for 循环遇到了这个恼人的问题。这是我的程序的架构

public static void methodA(File a, File b){
      //procedure
}

Public static void readFiles(String a){

   File folder = new File(a);
   File[] listOfFiles = folder.listFiles(); 

    for (int i = 0; i < listOfFiles.lenght-1; i++) 
    {

        if (listOfFiles[i].isDirectory())
        {
            readFile(listOfFiles[i].getPath());
        }
        else
        {
            methodA(listOfFiles[i],listOfFiles[i+1])
        }
    }
}

 public static void main(String[] args) throws InterruptedException {

   String path = new String("Path to global folder");
   readFile(path);

}

问题是,当我进入第 2 版到第 3 版的第一个文件夹时,出现此消息错误(文件数 - 仅文件数 - 等于 5):

线程“主”java.lang.NullPointerException 中的异常

但是,如果我这样做:for (int i = 3; i < listOfFiles.lenght-1; i++)程序可以正常工作,并且其他文件夹中的某些文件也会发生同样的情况。

在每个文件夹中至少有 3 个文件(仅文件)。

会发生什么?,我也尝试进行调试以尝试了解问题,但没有任何成功。

4

1 回答 1

1

listFiles 仅对文件夹有效。如果您在文件而不是文件夹上使用 listFiles,它将返回null.

然后,listOfFiles.lenght抛出一个 NPE。

翻转你的 If-Case。

于 2013-10-21T12:56:12.953 回答