java - 如何访问仅包含部分文件名的文件?

标签 java file

我正在尝试实例化一个 File 变量,但只知道部分文件名。 IE。我知道文件名以“pass_231_”开头,但不知道其余的。这可能吗?

最佳答案

如果您知道它在哪个目录中,那么是的。您可以使用 FileFilter :

final String prefix = "pass_231_"
File dir = ... ;
File[] candidates = dir.listFiles(new FileFilter() {
    @Override
    public boolean accept(File pathname) {
        return pathname.getName().startsWith(prefix);
    }
});
// candidates will contain all files starting with "pass_231_"

如果需要递归搜索(包括子文件夹),可以这样做:

String prefix = "pass_231_";
File dir = ... ;
List<File> candidates = new ArrayList<File>();
searchRecursively(dir, prefix, candidates);
// candidates will contain all files starting with "pass_231_"

然后 searchRecursively 看起来像这样:

public static void searchRecursively(File dir, final String prefix, List<File> candidates) {
    File[] matches = dir.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.getName().startsWith(prefix);
        }
    });
    candidates.addAll(Arrays.asList(matches));
    File[] subdirs = dir.listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.isDirectory();
        }
    });
    for (File subdir : subdirs) {
        searchRecursively(subdir, prefix, candidates);
    }
}

关于java - 如何访问仅包含部分文件名的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12901183/

相关文章:

java - ListenableFuture - 收到集群中的消息并执行耗时代码后完成

java - 如何从firebase存储获取imageUrl并存储在firebase实时数据库中?

java - 在数组中保存元素的算法保持顺序

C# - 在 USB FAST 上创建大文件

c - 有没有办法读取文件流,直到找到句点 (.)。然后重复?

c - 在文本文件C中搜索关键字

java - OpenAL WaveData 错误

java - 如何使用 PDFBox 2.0 创建单选按钮组

python - 我需要类方面的帮助 - 用于显示文件名、文件大小、路径和其他任何内容的类

file - Gorilla Golang Pathprefix 不提供文件