一、前言

批量读取文件夹内的文件,并替换各个文件的内容

二、代码

新建一个普通 Java 项目就可以,创建文件 ReadFile.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.io.*;

public class ReadFile {
public void replaceFileStr() {
//遍历文件夹内所有内容,不包换文件夹里的文件夹里的内容
String path = "F:\\工作和作业\\Java\\IDEA项目\\读取文件替换文件内容\\txt";
//获取其file对象
File file = new File(path);
//遍历path下的文件和目录,放在File数组中
File[] fileArray = file.listFiles();
//判断文件夹内是否有文件
if (fileArray != null){
//遍历File[]数组
for(File f : fileArray){
String filepath = f.getPath();
//要替换的旧内容
String oldStr = "1010";
//替换成的新内容
String newtStr = "哈哈哈";
try {
// 创建文件输入流
FileReader fileReader = new FileReader(filepath);
// 创建缓冲字符数组
char[] data = new char[1024];
StringBuilder sb = new StringBuilder();
// fis.read(data):将字符读入数组。在某个输入可用、发生I/O错误或者已到达流的末尾前,此方法一直阻塞。
// 读取的字符数,如果已到达流的末尾,则返回 -1
int rn = 0;
while ((rn = fileReader.read(data)) > 0) { // 读取文件内容到字符串构建器
String str = String.valueOf(data, 0, rn);// 把数组转换成字符串
sb.append(str);
}
// 生成字符串,并替换搜索文本
String str = sb.toString().replace(oldStr, newtStr);
// 创建文件输出流
FileWriter fileWriter = new FileWriter(filepath);
// 把替换完成的字符串写入文件内
fileWriter.write(str.toCharArray());
// 关闭文件流,释放资源
fileReader.close();
fileWriter.close();
//若非目录(即文件),则打印,提示替换完成
if(!f.isDirectory()) {
System.out.println(f.getPath() + "已完成替换。");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}else {
System.out.println("文件夹为空!");
}
}

public static void main(String[] args) {
ReadFile readFile = new ReadFile();
readFile.replaceFileStr();
}
}


三、运行结果

我新建了一个 test.txt ,里面写了 1010嘻嘻嘻,你们可以多建几个,可以批量读取替换的
在这里插入图片描述
运行项目,发现 1010 被替换为了 哈哈哈

在这里插入图片描述