有没有办法首先过滤所有扩展名为“java”的文件,然后搜索查找带有该扩展名的文件?你能解释一下代码片段吗?谢谢
答案 0 :(得分:3)
我也投票支持Apache Commons。
http://www.kodejava.org/examples/359.html给出了一个用法示例:
package org.kodejava.example.commons.io;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.Collection;
import java.util.Iterator;
public class SearchFileRecursive {
public static void main(String[] args) {
File root = new File("/home/foobar/Personal/Examples");
try {
String[] extensions = {"xml", "java", "dat"};
boolean recursive = true;
//
// Finds files within a root directory and optionally its
// subdirectories which match an array of extensions. When the
// extensions is null all files will be returned.
//
// This method will returns matched file as java.io.File
//
Collection files = FileUtils.listFiles(root, extensions, recursive);
for (Iterator iterator = files.iterator(); iterator.hasNext();) {
File file = (File) iterator.next();
System.out.println("File = " + file.getAbsolutePath());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:1)
在Unix上,您可以尝试find <dir> -name '*.java' -exec grep <search string> {} \;
答案 2 :(得分:0)
如果您需要在Java中执行此操作,最简单的方法是使用Apache Commons IO,尤其是FileUtils.iterateFiles()。
话虽如此,如果这是一个家庭作业问题,我怀疑你会因为使用上述内容而获得很多分数。我怀疑这个作业的目的是测试你编写递归例程的能力(那里有一个线索!) - 找不到第三方库(本身就是一个有价值的技能,记住)。
答案 3 :(得分:0)
使用GitHub
上的FileSearcher.java可以轻松完成此操作在整个计算机中查找所有.java文件的示例如下所示:
public class FindDotJava {
public static void main(String[] args) {
ArrayList<File> dotJavaFiles = FileSearcher.findFiles(FileSearcher.SEARCH_EVERYTHING, "java");
}
}
您可以通过将SEARCH_EVERYTHING更改为CURRENT_FOLDER或SUBFOLDERS_AND_CURRENT来轻松搜索当前文件夹或当前文件夹+子文件夹。
我希望这会有所帮助!!!