我想知道是否有任何特定的方法来过滤文件名并根据其前缀将特定文件单独添加到文件数组中???
例如: 文件:A_error_log.txt,A.txt,A.fasta,B.fasta,B_error_log.txt 从上面的文件列表中,我只想将 A 类文件移动到一个文件夹,将 B 类文件移动到另一个文件夹。
一个标准的解决方案是,获取文件列表,然后使用 get name 检查它们的特定文件名前缀并添加它们。
我想知道有没有其他方法已经存在 4r 这个?
使用FileFilter。一个例子是here。您只需要Java。没有外部依赖。
Apache Commons IO有很多现成的文件过滤器,你可以组合这些过滤器,对它们应用AND
和OR
操作。此外,它有许多很好的文件操作,使用这些过滤器。
如果你可以容忍额外的外部依赖,Apache Commons IO的 filefilter 包有许多用于这种操作的预制过滤器,你想要的很容易用WildcardFileFilter完成:
File dir = new File(".");
FileFilter fileFilter = new WildcardFileFilter("A*");
File[] files = dir.listFiles(fileFilter);
for (int i = 0; i < files.length; i++) {
System.out.println(files[i]);
}
还有许多其他过滤器和一组“逻辑”过滤器(AndFileFilter、OrFileFilter 和 NotFileFilter),它们允许您将多个过滤器串在一起。
如果您决定使用 Commons IO,在FileUtils包中有许多非常有趣的方法可以移动文件,这些方法也可以处理必须将文件移动到另一个文件系统的情况。