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