【发布时间】:2019-06-12 15:10:17
【问题描述】:
我有一个问题,我的这个目录有 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()
【问题讨论】:
-
这些文件是在目录本身还是在子目录中?如果它们位于子目录中,则需要使用 FileFilter 来接受以 BCM 开头的任何目录或文件。如果它们在目录本身中,那么 FilenameFilter 就可以了。
-
“netbeans 中的那个”是什么意思?
-
欢迎来到 Stack Overflow!请阅读“如何创建minimal reproducible example”。然后使用edit 链接改进您的问题(不要通过 cmets 添加更多信息)。否则我们无法回答您的问题并为您提供帮助。
-
不要使用
File h = new File(filename);,因为这会在当前目录中创建一个文件引用。而是使用File h = new File(dir, filename);或dir.listFiles(filter)来获取File[]数组,而不仅仅是文件名数组。 -
欢迎@Shiro,我刚刚发布了如何使用commons-io 库实现此目的的答案。
标签: java file directory stream