我找到了一个遍历文件夹并返回fileNames的代码。 我创建了一个具有8000个位置的String []数组,因为我有大约7500个文件,并且越来越多。 如果我使用在system.out.println中找到的代码,它将返回每个文件名,但是,如果我使用我的代码将位置写入Array索引,则我只会得到1个位置,而其余位置都为空。 不幸的是我无法解决问题。
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);
}
}
}
我希望能够迭代低谷的fileNames并获取filesNames,以便我可以使用它。 但是实际上只有第一个位置会发生变化,其他所有位置仍然为空。
答案 0 :(得分:0)
从不使用在'c ++'处更改的值。每次在代码执行到c ++之前,将c的变量重置为0。
答案 1 :(得分:0)
这与使用 stream API (Java 1.8及更高版本)的算法相同:
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