本次用随机文件实现文本内容替换,不过有苛刻的要求,要求原字符串和替换字符串字节长度相等。
在文件找到原字符串开始位置,然后seek定位,开始讲替换后字符串写入即可实现替换文本特定内容.
public class AlterStringInFile {
private static String path ="src/源文件"; //目标文件路径
private static File file = new File(path); //创建目标文件
public static void alterLimitString(String oldString,
String newString){
if(oldString.length() != newString.length())
return;
try {
long start = System.currentTimeMillis();
RandomAccessFile raf = new RandomAccessFile(file, "rw");
int sum = 0;
String string;
//记录每次读取位置
long lastPoint = raf.getFilePointer();
while ((string = raf.readLine()) != null){
//转换随机文件流读取汉字乱码
string = new String(string.getBytes("ISO-8859-1"));
//判断是否包含,包含则替换重写
if (string.contains(oldString)){
string = new String(
string.replace(oldString, newString));
raf.seek(lastPoint); //回到上一行末尾位置
raf.write(string.getBytes());
sum++;
}
lastPoint = raf.getFilePointer();
}
raf.close();
long time = System.currentTimeMillis() - start;
System.out.println(sum+"个"+oldString
+"替换成"+newString+"耗费时间:"+time);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args){
String oldString = "oldString";
String newString = "newString";
alterLimitString(newString, oldString);
}
}