51,410
社区成员
发帖
与我相关
我的任务
分享package filenameFilter;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.util.ArrayList;
public class FileSearch {
public static void main(String[] args) {
File dir = new File("C:\\Users\\yizhe.liu\\workspace\\ANG\\webapp");//检索路径
File file = new File("C:\\Users\\yizhe.liu\\workspace\\filenameFilter\\framework","test.txt");//创建一个文档用作存储
FilenameFilter searchTest = new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
// 创建返回值,测试文件是否包含在文件列表中
boolean flag = true;
// 用布尔型筛选文件类型是否为js或者html
if (name.toLowerCase().endsWith(".js")) {
} else if (name.toLowerCase().endsWith(".JS")) {
} else if (name.toLowerCase().endsWith(".Js")) {
} else if (name.toLowerCase().endsWith(".jS")) {
} else if (name.toLowerCase().endsWith(".htm")) {
} else if (name.toLowerCase().endsWith(".html")) {
} else if (name.toLowerCase().endsWith(".Html")) {
} else if (name.toLowerCase().endsWith(".HTML")) {
} else {
flag = false;
}
// 判断文件是否以js、JS等后缀名结尾的
//当返回true时,表示文件的类型满足要求
return flag;
}
};
ArrayList<File> path = new ArrayList<File>();
writeToArr(dir,searchTest,path);
writeTofile(path,file);
}
private static void writeTofile(ArrayList<File> al, File file) {
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(file)); //加入一个缓冲,能提高性能
for(File f: al){
//遍历,增强for循环
new String();
// bw.write(String.valueOf(f.length()));
bw.write(f.getAbsolutePath());//得到路径
bw.newLine();//写入一个行分隔符。
bw.flush();//刷新缓冲
}
} catch (IOException e) {
throw new RuntimeException("写入失败");
}finally{
if(bw != null)
try {
bw.close();
} catch (IOException e) {
throw new RuntimeException("关闭失败");
}
}
}//处理异常
public static void writeToArr(File dir, FilenameFilter searchTest, ArrayList<File> al) {
File []files = dir.listFiles();
for(File f : files){
if(f.isDirectory()){
//检查对象是否是文件夹
writeToArr(f, searchTest, al);
}else{
if(searchTest.accept(dir, f.getName())){
al.add(f);
System.out.println(f);
}
}
}
}
}