java - 读取大量文件名的最有效方法是什么?

标签 java file

我需要获取很多文件夹的名称以及文件夹中的文件。我尝试使用 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/

相关文章:

java - 如何使用 Android Studio 列出 android 10 目录中的所有文件?

javascript - Java Selenium - JavaScriptExecutor - 参数属于非法类型 : driverFactory. CustomWebElement

java - 推荐哪个 : Instant. now().toEpochMilli() or System.currentTimeMillis()

c++ - 连接文件而不复制其内容

PHP检查文件是否正在使用

java - 使用正则表达式匹配模块代码

java - 将属性放回到java中的请求中

C:读取一个目录下的所有*.txt文件

java - 在不阅读的情况下拆分文本文件

Java Scanner 无法读取我的 txt 文件