package com.general;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.List;
/*
* @author chenyanwei
* @date 22 Jan 2019 21:56:07
* @version 1.0
*/
/**
* 批量修改目录下的文件的指定字符串
*
* @author 18430
*
*/
public class ModifyFile {
public void modifyFile(String directory, String oldStr, String newStr) {
RandomAccessFile raf = null;
ArrayList<File> list = (ArrayList<File>) getFiles(directory);
for (File file : list) {
try {
raf = new RandomAccessFile(file.getPath(), "rw");
String line = null;
long lastPoint = 0; // 记住上一次的偏移量
while ((line = raf.readLine()) != null) {
final long ponit = raf.getFilePointer();
if (line.contains(oldStr)) {
String str = line.replace(oldStr, newStr);
raf.seek(lastPoint);
raf.writeBytes(str);
}
lastPoint = ponit;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public List<File> getFiles(String directory) {
ArrayList<File> list = new ArrayList<File>();
File file = new File(directory);
if (file.exists()) {
File[] file1 = file.listFiles();
for (File file2 : file1) {
list.add(file2);
}
}
return list;
}
}