创建文件加载与操作转换类Trasfer.java
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
public class Trasfer {
/**
* 记录替换的记录
*/
private static Map recordMap = new HashMap();
/**
* 文件内容
*/
private static StringBuffer content = null;
public static StringBuffer getContent() {
return content;
}
public static Map getRecordMap() {
return recordMap;
}
/**
* JDK11 读取与加载文件
*
* @param fileName 读取源文件名
* @return
*/
public static StringBuffer loadByFile(String fileName) {
StringBuffer sbf = new StringBuffer();
try {
// 读取字节流
byte[] bytes = Files.readAllBytes(Paths.get(fileName));
sbf = new StringBuffer(new String(bytes, "utf-8"));
return content = sbf;
} catch (IOException e) {
e.printStackTrace();
}
return content = sbf;
}
/**
* 替换指定字符串
*
* @param org 被替换的字符串
* @param result 替换成的字符串
* @return
*/
public static StringBuffer replaceStr(String org, String result) {
if (content == null) {
return content;
}
int index = content.indexOf(org);
while (index >= 0) {
content.replace(index, index + 1, result);
index = content.indexOf(org);
Integer count = recordMap.get(org);
// 替换次数
recordMap.put(org, count == null ? 1 : ++count);
}
return content;
}
/**
* 以默认UTF-8编码,存储内容到指定文件
*
* @param destFileName 目标文件名
*/
public static void saveToFile(String destFileName) {
if (recordMap.isEmpty()) {
return;
}
recordMap.clear();
try {
// Java 11 , default StandardCharsets.UTF_8
Files.writeString(Paths.get(destFileName), content);
// encoding
// Files.writeString(Paths.get(path), content, StandardCharsets.US_ASCII);
// extra options
// Files.writeString(Paths.get(path), content,
//StandardOpenOption.CREATE, StandardOpenOption.APPEND);
System.out.println("save success");
} catch (IOException e) {
e.printStackTrace();
}
}
}
创建工具入口,这里使用测试类TrasferTest.java
import org.junit.Test;
public class TrasferTest {
@Test
public void readFileContent() throws Exception {
// 源文件路径
String sourcePath = "D:\\1lagoustudy\\workspace\\doc\\spring\\Spring.md";
// sourcePath = "D:\\1lagoustudy\\workspace\\doc\\mybatis\\mysql 手写.md";
// 目标文件路径
String destFileName = "D:\\1lagoustudy\\workspace\\doc\\spring\\test2.md";
destFileName = sourcePath;
Trasfer.loadByFile(sourcePath);
System.out.println(Trasfer.getContent());
// 核心替换
replace();
System.out.println("替换目标文字个数: " + Trasfer.getRecordMap());
Trasfer.saveToFile(destFileName);
}
/**
* 替换内容
*/
private void replace() {
Trasfer.replaceStr("⽀", "支");
Trasfer.replaceStr("⽬", "目");
Trasfer.replaceStr("⽅", "方");
Trasfer.replaceStr("⽣", "生");
Trasfer.replaceStr("⾼", "高");
Trasfer.replaceStr("⾏", "行");
Trasfer.replaceStr("⻆", "角");
Trasfer.replaceStr("⾮", "非");
Trasfer.replaceStr("⼦", "子");
Trasfer.replaceStr("⼯", "工");
Trasfer.replaceStr("⼊", "入");
Trasfer.replaceStr("⾯", "面");
Trasfer.replaceStr("⽤", "用");
Trasfer.replaceStr("⼆", "二");
Trasfer.replaceStr("⼀", "一");
Trasfer.replaceStr("⽂", "文");
Trasfer.replaceStr("⼼", "心");
Trasfer.replaceStr("⼚", "厂");
Trasfer.replaceStr("⾥", "里");
Trasfer.replaceStr("⽆", "无");
Trasfer.replaceStr("⽽", "而");
Trasfer.replaceStr("⽐", "比");
Trasfer.replaceStr("⻅", "见");
Trasfer.replaceStr("⽇", "日");
Trasfer.replaceStr("⼝", "口");
// 更新
Trasfer.replaceStr("⼿", "手");
Trasfer.replaceStr("⾃", "自");
Trasfer.replaceStr("⼏", "几");
Trasfer.replaceStr("⼰", "己");
Trasfer.replaceStr("⻄", "西");
Trasfer.replaceStr("⻚", "页");
Trasfer.replaceStr("⼗", "十");
Trasfer.replaceStr("⾄", "至");
Trasfer.replaceStr("⼋", "八");
Trasfer.replaceStr("⻛", "风");
Trasfer.replaceStr("⽚", "片");
Trasfer.replaceStr("⼴", "广");
Trasfer.replaceStr("⽹", "网");
Trasfer.replaceStr("⾸", "首");
}
}
若不想更新原文件,想生成新文件,可以改变量destFileName的值为临时文件路径
如果想对内容进行其他操作,可以再添加方法