高分悬赏,Java语言批量查找一个文件夹下所有的txt文本,并且删除一个单词,谁能给我个例子?
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.FilenameFilter;
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
System.out.println("请输入文件夹路径:");//删除该文件夹中所有TXT文件中的指定单词
File dir=new File(scan.next());
System.out.println("请输入要删除的单词:");
String word=scan.next();
FilenameFilter ff=new FilenameFilter(){//创建一个过滤出TXT文件的过滤器
@Override
public boolean accept(File dir,String name){
String[] split=name.split("\\.");
if(split.length<=1)return false;
if(split[split.length-1].equalsIgnoreCase("txt"))return true;
else return false;
}
};
File[] files=dir.listFiles(ff);//获取所有TXT文件
System.out.println("已发现"+files.length+"个TXT文件");
for(File temp:files){
System.out.println("正在处理:"+temp.getName());
try{
//从TXT文件中逐行读取,删除指定单词后写入缓存文件
BufferedReader reader=new BufferedReader(new FileReader(temp));
BufferedWriter writer=new BufferedWriter(new FileWriter("cache.dat"));
String buf;
while((buf=reader.readLine())!=null){
buf=buf.replaceAll(word,"");
writer.write(buf+"\r\n");
}
writer.flush();
reader.close();
writer.close();
//把缓存文件中的内容复制到原TXT文件中
reader=new BufferedReader(new FileReader("cache.dat"));
writer=new BufferedWriter(new FileWriter(temp));
while((buf=reader.readLine())!=null)
writer.write(buf+"\r\n");
writer.flush();
reader.close();
writer.close();
}catch(Exception e){
e.printStackTrace();
System.exit(1);
}
}
//删除缓存文件
File cache=new File("cache.dat");
cache.delete();
System.out.println("操作完成");
}
}
注:由于编码问题,对于中文文本不能正确识别并删除