Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 迭代未写入正确的数组索引_Java_Arrays_Iterator - Fatal编程技术网

Java 迭代未写入正确的数组索引

Java 迭代未写入正确的数组索引,java,arrays,iterator,Java,Arrays,Iterator,我发现了一个代码,它通过一个文件夹进行迭代并返回文件名。 我创建了一个包含8000个位置的String[]数组,因为我有大约7500个文件,而且还有更多。 如果我使用system.out.println中找到的代码,它会返回每个文件名,但如果我使用代码将位置写入数组索引,我只会得到1个位置,其余都是null。 不幸的是,我不能解决这个问题 import java.io.*; public class Tester { public static void main(String[]

我发现了一个代码,它通过一个文件夹进行迭代并返回文件名。 我创建了一个包含8000个位置的String[]数组,因为我有大约7500个文件,而且还有更多。 如果我使用system.out.println中找到的代码,它会返回每个文件名,但如果我使用代码将位置写入数组索引,我只会得到1个位置,其余都是null。 不幸的是,我不能解决这个问题


import java.io.*;

public class Tester {
    public static void main(String[] args) {
        File folder = new File("mypath\\myfilefolder");
        File[] listOfFiles = folder.listFiles();
        String[] fileNames = new String[8000];

        for (int i = 0; i < listOfFiles.length; i++) {
            int c = 0;
          if (listOfFiles[i].isFile()) {
              fileNames[c++] = listOfFiles[i].getName();
              // Seems not to be doing anything like supposed
    //      System.out.println(listOfFiles[i].getName());
    //      Prints every filename on a new line       
          } else if (listOfFiles[i].isDirectory()) {
            System.out.println("Directory " + listOfFiles[i].getName());
          }
        }

        for (String element: fileNames) {
            System.out.println(element);
        }
    }
}

导入java.io.*;
公共类测试员{
公共静态void main(字符串[]args){
文件夹=新文件(“mypath\\myfilefolder”);
File[]listOfFiles=folder.listFiles();
字符串[]文件名=新字符串[8000];
for(int i=0;i
我希望能够通过文件名迭代并获得文件名,这样我就可以使用它了。
但实际上只有第一个位置被更改,其他所有位置仍然为空。

在“c++”处更改的值从未被使用。每次代码执行到C++之前,C的变量被重置为0。

< p>,这将是与流API(java 1.8及以上)相同的算法:


intc=0在循环之前移动它你在哪里移动c?您总是设置
int c=0在循环中。因此,这将永远是零,这样一个简单的错误,使这么多的麻烦。。。。非常感谢,我甚至没有注意到>。
String[] fileNames = Arrays.stream(folder.listFiles()) // stream all the files in the directory
    .filter(file -> !file.isDirectory()) // filter any directory files in there
    .map(File::getName) // map an item to its name
    .toArray(String[]::new); // collect as a String array