文件操作类的选择
1、网上看到有博主说可以使用RandomAccessFile类进行操作,之前没有尝试果断测试一下,发现问题:
1)假如替换的变量为xxx,替换成pwd则可以正确替换,如果替换为name则出现问题。
2)RandomAccessFile利用偏移量指针,需要替换者和被替换着的字符长度一样才能正确替换
故:还是采取原始方式进行文件替换吧,要是文件内容都加载到内存中还是挺伤的。。
亲测可用代码
/**
* 修改文件内容
* @param fileName
* @param oldstr
* @param newStr
* @return
*/
private boolean modifyFileContent(String fileName, String oldstr, String newStr){
String line ="";
StringBuffer strBuffer=new StringBuffer();
FileReader fileReader = null;
try {
fileReader = new FileReader(new File(fileName));//传入文件路径
BufferedReader bufReader=new BufferedReader(fileReader);
LineNumberReader reader = new LineNumberReader(bufReader);
while ((line = reader.readLine()) != null) {
String a = line.replace(oldstr, newStr);
strBuffer.append(a).append(System.getProperty("line.separator")); //防止文件格式变化
}
reader.close();
bufReader.close();
bufReader.close();
PrintWriter printWriter = new PrintWriter(--输出路径);//替换后输出的文件位置
printWriter.write(strBuffer.toString().toCharArray());
printWriter.flush();
printWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
return true;
}