在java中使用for循环读取文件

时间:2013-10-21 12:49:07

标签: java file for-loop

我用一个简单的循环来解决这个烦恼的问题。这是我的程序的架构

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):

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

但是,如果我做这样的事情: for(int i = 3; i&lt; listOfFiles.lenght-1; i ++)该程序没有任何问题,同样的情况发生在一些其他文件夹中的文件。

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

可能发生什么?,我也尝试过调试以试图理解问题,但没有任何成功。

1 个答案:

答案 0 :(得分:1)

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

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

翻转您的If-Cases。