java编写程序,一个文件夹里有好几百个txt文件,全部读取,保留有字符串"aaa"的txt,删除没有"aaa"字符串的txt
不是这样啊,是文件里面能容包含aaa,不是文件名包含aaa
追答好吧,那修正一下代码,如下,还是先备份文件,以免误删
public static void main(String[] args) {
String regex = "[\\s\\S]*aaa[\\s\\S]*";//用来匹配是否是含有aaa字符串
String path = "F:"+File.separator+"Test";//文件夹路径
File file = new File(path);
List keepFiles = new ArrayList();
if(file.isDirectory()){//如果是文件夹则进入
File f = null;
String[] files = file.list();//文件夹中的所有文件名
Reader r = null;
BufferedReader bw = null;
for(int i=0;i<files.length;i++){//循环遍历
f = new File(path+File.separator+files[i]);
try {
r = new FileReader(f);
bw = new BufferedReader(r);
while(bw.read()!=-1){
String content = bw.readLine();
if(content.matches(regex)){
keepFiles.add(files[i]);
System.out.println("不被删除的文件有:"+files[i]);
break;
}
}
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
for(int j=0;j<files.length;j++){
f = new File(path+File.separator+files[j]);
if(!keepFiles.contains(files[j])){
f.delete();
System.out.println("要被删除的文件:"+files[j]);
}
}
}
}
谢谢啦!