public static void main(String[] ars) {
String path = "E:\\venderFiles\\orderPriceSheet\\PO20111067PriceSheet.html";
try {
StringBuffer bs = new StringBuffer();
FileReader fr = new FileReader(path); ————— (1)
BufferedReader br = new BufferedReader(fr); ———— (2)
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
bs.append(line + "\n");
}
br.close();
System.out.println("读取文件成功。");
//替换指定字符串
String str = bs.toString();
if (str.indexOf("PO20111067PriceSheet.html_files") != -1) {
str = str.replaceAll("PO20111067PriceSheet.html_files",
"PriceSheet_Imagefiles");
}
FileWriter fw = new FileWriter(path); ———— (3)
BufferedWriter bw = new BufferedWriter(fw); ———— (4)
bw.write(str);
bw.flush();
bw.close();
System.out.println("写入文件成功。");
} catch (Exception e) {
System.out.println(e);
}
}
替换是成功替换了,结果打开新的HTML文件,出现乱码了。从读取代码输出结果发现,中文读入时发生乱码了,于是找解决办法:使用指定的编码读入文件。只需要将以上(1)、(2)两句改为如下即可:(由于我的HTML文件内容编码是UTF-8,所以指定为它试试)
//使用指定的编码读入文件,读取文件时就不会乱码
InputStreamReader isr = new InputStreamReader(new FileInputStream(path), "UTF-8");
BufferedReader br = new BufferedReader(isr);
测试读取输出结果,没有乱码了。打开替换后的HTML文件,居然还有乱码,还更多了……-_-! 我猜想是不是写入流也需要指定编码,于是模仿读取方式改成写入指定编码的代码,将(3)、(4)语句改为如下:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(path),"UTF-8");
BufferedWriter bw = new BufferedWriter(osw);
运行测试,OK,乱码搞定咯!