Java替换文本文件字符串方法及解决读取/写入中文乱码问题

本文介绍了如何使用Java替换文本文件中的字符串,并解决在读取和写入过程中遇到的中文乱码问题。通过指定UTF-8编码进行读写操作,成功避免了乱码的出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

           由于需要替换由JasperReport生成的html文件中图片路径字符串,于是找了替换文本字符串的方法。网上提供的思路基本都是读取文本内容,用String的replaceAll()替换掉指定字符,再将新内容写进文件。我起初实现的代码如下:

  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,乱码搞定咯!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值