我需要获取很多文件夹的名称以及文件夹中的文件。我尝试使用 FileUtils
,但与 java 原生的 Files.walk()
相比,它太慢了,因此我无法使用它。
但我什至无法使用java的Files.walk()
,因为当它尝试读取隐藏文件时,它会抛出Exception
并停止(隐藏文件无法避免,有人说这是一个设计错误 - Files.walk skip directories )。有什么不同的方法吗?我现在不知道该怎么办。
最佳答案
请在您的代码中执行以下操作。-
import org.apache.commons.io.filefilter.HiddenFileFilter;
我给你举个例子-
package test;
import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import org.apache.commons.io.filefilter.HiddenFileFilter;
public class ListHiddenAndVisibleFilesTest {
public static void main(String[] args) throws IOException {
File directory = new File(".");
System.out.println("Hidden Files:");
File[] hiddenFiles = directory.listFiles((FileFilter) HiddenFileFilter.HIDDEN);
for (File hiddenFile : hiddenFiles) {
System.out.println("hidden file: " + hiddenFile.getCanonicalPath());
}
System.out.println("\nVisible Files:");
File[] visibleFiles = directory.listFiles((FileFilter) HiddenFileFilter.VISIBLE);
for (File visibleFile : visibleFiles) {
System.out.println("visible file: " + visibleFile.getCanonicalPath());
}
}
}
这给出了类似
的结果
Hidden Files:
hidden file: C:\kum\workspace\test\hidden1.txt
hidden file: C:\kum\workspace\test\hidden2.txt
Visible Files:
visible file: C:\kum\workspace\test\.classpath
visible file: C:\kum\workspace\test\.project
visible file: C:\kum\workspace\test\visibleFile.txt
关于java - 读取大量文件名的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59147318/