📄 replacefilebyregex.java
字号:
package com.pengjj.test;
import java.io.File;
import java.io.FileOutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.pengjj.util.FileUtil;
/**
* <p>Title: </p>
* <p>Description: 替换文件中的部分内容</p>
* <p>Copyright: Copyright (c)2005</p>
* <p>Company: digitalchina</p>
* @author: pengjja 2005-12-20
* @version: 1.0
*/
public class ReplaceFileByRegex {
/**
* 文件夹下的文件名称
*/
static String fileName;
//将改变的文件保存到原文件中
static FileOutputStream fos;
public static void main(String[] args) {
/**
* 根据需要修改以下初始值
*/
String fileType = "Root"; //文件类型
//除去格式:<!--pengjj-->
String reg = ":pserver:pengjj1@10.1.149.116:/A1C103-110"; //正则表达式
String replace = ":pserver:pengjj1@scmserver:/A1C103-110"; //用来替换匹配结果的字符串
fileName = "D:/a1c103-110"; //文件夹或文件名称
File file = new File(fileName);
replaceStr(file, fileType, reg, replace);
}
/**
* 循环得到文件夹下的所有文件,按规则进行匹配
* @param file File 文件夹路径下的所有文件
* @param fileType 文件类型 后缀名
* @param reg 正则表达式
* @param replace 用来替换匹配结果的字符串
*/
public static void replaceStr(File file, String fileType, String reg,
String replace) {
if (file.exists()) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
replaceStr(files[i], fileType, reg, replace);
}
} else if (file.isFile() && FileUtil.validate(file, fileType)) {
try {
fileName = file.getPath();
replaceContent(fileName, reg, replace); //进行转化
} catch (Exception e) {
System.out .println(" File have some error:"
+ file.getPath());
}
}
}
}
/**
* 替换文件目录下所有文件的部分字符串
* @param sFileName 文件名称
* @param sRegex 正则表达式
* @param replace 替换字符串
*/
public static void replaceContent(String sFileName, String sRegex,
String replace) {
/* 读取文件的全部字符串内容 */
String strFile = FileUtil.getFileContent(sFileName); //文件内容
String result = ""; //替换后的结果
int begin = 0; //开始位置
int end = 0; //结束位置
String match = ""; //匹配的字符串
Pattern p = Pattern.compile(sRegex);
Matcher m = p.matcher(strFile);
int count = 1;
while (m.find()) {
count++;
}
System.out.println(strFile);
for (int i = 0; i <= count; i++) {
if (m.find()) {
match = m.group();
strFile = m.replaceFirst(replace);
System.out.println(i);
System.out.println(strFile);
m = p.matcher(strFile);
}
}
//result = m.replaceFirst(replace);
//将替换完成后的字符串写入文件
FileUtil.writeFile(sFileName, strFile);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -