第一种方法:
public class Main implements FilenameFilter { public static Listresult = new ArrayList();//定义"全局变量"
String extension = ".";
public Main(String fileType) {
extension += fileType;
}
@Override
public boolean accept(File dir, String name) {
return name.endsWith(extension);//重写accept方法
}
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
System.out.println("请先输入目录的绝对路径(例如://Users//apple//Desktop//java):");
String adderss = input.next();
File allfile = new File(adderss);
if (!allfile.exists()) {
System.out.println("你输入的路径有误!请重新输入!");
} else if (allfile.isFile()) {
System.out.println("你输入的是文件!请输入路径:");
} else {
isJava(adderss);//先判断用户输入路径下的文件
File[] files = allfile.listFiles();
for (File file : files) {
if (file.isDirectory()) {
isJava(file.getAbsolutePath());
}
}
}
printImformation();
}
public static void isJava(String address) {
File directory = new File(address);
File[] javaFiles = directory.listFiles(new Main("java"));
//这里可以自己修改,如果想查找.txt就改成.txt就好了
System.out.println("\n目录" + directory.getAbsolutePath() + "下的.java文件");
for (File file : javaFiles) {
result.add(file.getAbsolutePath());
System.out.println(" " + file.getName());
}
}
public static void printImformation(){
System.out.println(" \n共"+result.size()+"个.java文件!");
}
}
第二种方法:
public static List<string> getFileList(File file) {
//这个函数得到目录下所有.java文件
List<string> result = new ArrayList<string>();
File[] directoryList;
directoryList = file.listFiles(//该函数将文件加入file数组中
new FileFilter() {// 内部匿名类,用来过滤文件类型
@Override
public boolean accept(File file) { //重写accept方法
if (file.isFile() && file.getName().indexOf("java") > -1) {
return true;
} else {
return false;
}
}
});
for (File directoryList1 : directoryList) {
result.add(directoryList1.getAbsolutePath());
//将所有的.java文件的绝对路径添加到result中
}
return result;
}