//将str1替换为str1
//FilePath为文件路径
public void changeTxtContent(String FilePath,String str1,String str2) throws Exception{
File file = new File(FilePath);
String code = getFileCharacterEnding(file);//获取文件编码
InputStreamReader read = new InputStreamReader(new FileInputStream(
file), code);
BufferedReader bufferedReader = new BufferedReader(read);
String TxtBuff=null;
String out="";
while((TxtBuff = bufferedReader.readLine()) !=null){
TxtBuff = TxtBuff.replace(str1, str2);
out+= TxtBuff;
}
read.close();
FileOutputStream outputstream=null;
outputstream = new FileOutputStream(file);
outputstream.write(out.getBytes(code));
outputstream.close();
}
获取文件编码
public static String getFileCharacterEnding(File file) throws Exception {
InputStream inputStream = new FileInputStream(file);
byte[] head = new byte[3];
inputStream.read(head);
String code = "gbk";
if (head[0] == -1 && head[1] == -2){
code = "UTF-16";
}
if (head[0] == -2 && head[1] == -1){
code = "Unicode";
}
if (head[0] == -17 && head[1] == -69 && head[2] == -65){
code = "UTF-8";
}
try{ inputStream.close();}catch (Exception e) {}
System.out.println(code);
return code;
}
这种方法应该不适合跨行内容的替换,如果要换行内容要替换的话 ,可以试下 out=out.replace(str1, str2);