Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用for循环读取文件_Java_File_For Loop - Fatal编程技术网

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

在java中使用for循环读取文件,java,file,for-loop,Java,File,For Loop,我用一个简单的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 < listOfFi

我用一个简单的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);

}
公共静态无效方法a(文件a、文件b){
//程序
}
公共静态void readFiles(字符串a){
文件夹=新文件(a);
File[]listOfFiles=folder.listFiles();
对于(int i=0;i
问题是,当我进入从版本2到版本3的第一个文件夹时,出现了此消息错误(文件数-仅文件数-等于5):

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

但是如果我这样做:for(int I=3;I程序工作没有任何问题,其他文件夹中的一些文件也会出现同样的情况

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


会发生什么?我也尝试过调试,试图了解问题,但没有成功。

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

然后,
listOfFiles.lengh
抛出一个NPE


翻转您的If案例。

完整堆栈跟踪plz。还有更多的代码。没有这一点,我只能说有些东西是空的……我非常怀疑它是否适用于这种变化。实际上它是有效的,这就是我决定写这个问题的原因。对于这两个文件(3和4),使for iterate只针对一个步骤,我没有任何问题。奇怪的是,对于其他文件夹,空指针指示在不同的位置。对于这个例子,我必须这样做:For(int I=0;Ilength错了。将来,最好直接复制/粘贴代码,而不是重新键入代码。此外,发布完整的堆栈跟踪。此外,methodA调用中的括号不平衡(三个开始括号和一个结束括号)。正如kevensa5所说,复制粘贴可能是你的朋友。