以当前默认file encoding读取文件然后以utf-8写入新文件

  在简体中文Windows上, 默认启动的Java程序如果没有加上设置file encoding,那么默认生成的文件(写文件时没有指定编码的那种)是GBK编码的,这样的文件传输到其它非GBK编码的机器上会无法正常显示。 需要将其转换为utf-8格式的,这样就能在所有机器上以utf-8打开正常显示。


    下面这段代码是如何将文件从当前默认的encoding读取后以utf-8写入


       读取当前的file encodning  (注意xxx.java文件是utf-8编码)

          String fileEncoding = System.getProperty("file.encoding");
          System.out.println("FileEncoding:" + fileEncoding);

         try {
        	 String filePath= "d:\\dir1\\file1.txt";
             File readfile = new File(filePath);

             if (readfile.isFile() && readfile.exists()) {
            	 //按照当前默认的file encoding独舞文件
                 InputStreamReader read = new InputStreamReader(new FileInputStream(readfile));
                 System.out.println("File Encoding:["+ read.getEncoding());
                 BufferedReader bufferedReader = new BufferedReader(read);
                 String lineTxt = null; 
                 StringBuilder sb = new StringBuilder();

                 while ((lineTxt = bufferedReader.readLine()) != null) {
                	 sb.append(lineTxt).append("\n");
                 }
                 read.close();
                 System.out.println("New:" + sb.toString());
                 
                 File fileWriter = new File(filePath + "a");
                 if (fileWriter != null && fileWriter.exists()) {
                     System.out.println("File["+fileWriter.getAbsolutePath() + "] already exists, Will not create it");
                 }
                 else {
                     System.out.println("File["+fileWriter.getAbsolutePath() + "] does not exists, create it");
                     //以utf-8写入文件
                     Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileWriter), "UTF-8"));

                     try {
                         out.write(sb.toString());
                     } finally {
                         out.close();
                     }
                 }
                 
             } 
             else {
                 System.out.println("File:["+ readfile.getAbsolutePath() +"] does non exist");
             }
             
         } catch (Exception e) {
             System.out.println("error");
             e.printStackTrace();
         }


   可以在启动java程序时改变file enconding

    set JAVA_OPTS=-Xmx512m    -Dfile.encoding=UTF-8 

     或者java -jar  xxxx  -Dfile.encoding=UTF-8 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值