gpt4 book ai didi

java - 如何在知道部分名称的目录中查找文件

转载 作者:行者123 更新时间:2023-12-01 06:01:46 25 4
gpt4 key购买 nike

我有一个问题,我的目录中有 1k+ 个文件和一些文件夹。我需要找到以“BCM”开头的文件(位于子目录中)的路径,但不仅是我找到的第一个文件,而是以该开头的每个文件。

我尝试查看有关此主题的其他答案,但找不到帮助,尝试使用此代码:


File dir = new File("K:\\Jgencs");
FilenameFilter filter = new FilenameFilter()
{
public boolean accept (File dir, String name)
{
return name.startsWith("BCM");
}
};

String[] children = dir.list(filter);
if (children == null)
{
System.out.println("No directory found");
}
else
{
for (int i = 0; i< children.length; i++)
{
String filename = children[i];
System.out.println(filename);
File h = new File(dir,filename);
System.out.println(h.getAbsolutePath()

最佳答案

[更新] 这是使用纯 Java 并从作为参数传递的变量中过滤文本的方法:

这是我的目录:/tmp

Directory structure

这是运行的代码:

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class GetAllFilesInDirectory {

public static void main(String[] args) throws IOException {

String filter = "BCM";

List<File> files = listFiles("/tmp", new CustomerFileFilter(filter));
for (File file : files) {
System.out.println("file: " + file.getCanonicalPath());
}
}

private static List<File> listFiles(String directoryName, CustomerFileFilter fileFilter) {
File directory = new File(directoryName);
List<File> files = new ArrayList<>();

// Get all files from a directory.
File[] fList = directory.listFiles(fileFilter);
if(fList != null) {
for (File file : fList) {
if (file.isFile()) {
files.add(file);
} else if (file.isDirectory()) {
files.addAll(listFiles(file.getAbsolutePath(), fileFilter));
}
}
}
return files;
}
}

class CustomerFileFilter implements FileFilter {

private final String filterStartingWith;

public CustomerFileFilter(String filterStartingWith) {
this.filterStartingWith = filterStartingWith;
}
@Override
public boolean accept(File file) {
return file.isDirectory() || file.isFile() && file.getName().startsWith(filterStartingWith);
}
}

这是输出:

file: /private/tmp/BCM01.txt
file: /private/tmp/BCM01
file: /private/tmp/subfolder1/BCM02.txt

在查找目录时递归调用该方法以列出其中的文件形式,并在添加之前按名称过滤文件。

关于java - 如何在知道部分名称的目录中查找文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56565396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com