本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类:

    通过读取源文件内容,用URLEncoding重新编码解码的方式实现。

     

    

 1 public class ChangeFileEncoding {
 2     public static int fileCount = 0;
 3     public static String sourceFileRoot = "替换为要转换的源文件或源目录"; // 将要转换文件所在的根目录
 4     public static String sourceCharset = "GB2312"; // 源文件编码
 5     public static String targetCharset = "utf8"; // 目标文件编码
 6     public static void main(String[] args) throws IOException {
 7         File fileDir = new File(sourceFileRoot);
 8         convert(fileDir);
 9         System.out.println("Total Dealed : " + fileCount + "Files");
10     }
11
12     public static void convert(File file) throws IOException {
13         // 如果是文件则进行编码转换,写入覆盖原文件
14         if (file.isFile()) {
15             // 只处理.java结尾的代码文件
16             if (file.getPath().indexOf(".java") == -1) {
17                 return;
18             }
19             InputStreamReader isr = new InputStreamReader(new FileInputStream(
20                     file), sourceCharset);
21             BufferedReader br = new BufferedReader(isr);
22             StringBuffer sb = new StringBuffer();
23             String line = null;
24             while ((line = br.readLine()) != null) {
25                 // 注意写入换行符
26                 line =  URLEncoder.encode(line, "utf8");
27                 sb.append(line + "\r\n");//windows 平台下 换行符为 \r\n
28             }
29             br.close();
30             isr.close();
31
32             File targetFile = new File(file.getPath());
33             OutputStreamWriter osw = new OutputStreamWriter(
34                     new FileOutputStream(targetFile), targetCharset);
35             BufferedWriter bw = new BufferedWriter(osw);
36             // 以字符串的形式一次性写入
37             bw.write(URLDecoder.decode(sb.toString(), "utf8"));
38             bw.close();
39             osw.close();
40
41             System.out.println("Deal:" + file.getPath());
42             fileCount++;
43         } else {
44             //利用递归对目录下的每个以.java结尾的文件进行编码转换
45             for (File subFile : file.listFiles()) {
46                 convert(subFile);
47             }
48         }
49     }
50
51 }

    

转载于:https://www.cnblogs.com/Michaelwjw/p/5929425.html

Java文件编码自动转换工具类(只改变编码,不会改变文件内容)相关推荐

  1. 【转载】Java文件编码自动转换工具类

    本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. 1 public class C ...

  2. java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换

    package com.shen.springboot.redis.util;import java.util.ArrayList; import java.util.HashMap; import ...

  3. PDF转换工具类(byte[]转PDF并生成文件)

    PDF转换工具类(byte[]转PDF并生成文件) 对html转为标准的xhtml public byte[] transferHtml2XHtml(byte[] html){Tidy tidy = ...

  4. 快速实现Excel到ODX/PDX数据文件的自动转换工具:VisualODX

    在创建ODX数据库的过程中,我们需要录入大量的数据和应对多种数据格式.这不仅费时费力而且还需要更高的人力成本.并且,其错误率高,从而导致了效率低下,开发速度缓慢.基于多年的汽车行业诊断经验,Softi ...

  5. java hh24miss_时间日期转换工具类,获取当前时间YYYYMMDD24HHMISS、YYYYMMDDHHMISS

    packagecom.ztesoft.iotcmp.util;importcom.ztesoft.zsmart.core.log.ZSmartLogger;importjava.sql.Timesta ...

  6. 快速实现Excel到ODX/PDX数据文件的自动转换工具:VisualODX—ODX

    在创建ODX数据库过程中,我们需要录入大量的数据及应对多种数据格式,无论时间.人力成本都比较高,且错误率高,从而导致效率低下:开发速度缓慢:基于多年的汽车行业诊断经验,Softing最新开发的Visu ...

  7. Java 全角半角转换工具类

    /*** @author: lee* @Date: 2018/11/29 09:56* @Description: 全角半角转换工具类*/ public class AsciiUtil {public ...

  8. Java 数据转换/进制转换 工具类

    public class ByteUtil {/*** 十六进制转为十进制*/public static String getHexToTen(String hex) {return String.v ...

  9. java inputtools_Java后台开发常用工具类

    本文涉及的工具类部分是自己编写,另一部分是在项目里收集的.工具类涉及数据库连接.格式转换.文件操作.发送邮件等等.提高开发效率,欢迎收藏与转载. 数据库连接工具类 数据库连接工具类--仅仅获得连接对象 ...

  10. 华为云OBS文件上传下载工具类

    Java-华为云OBS文件上传下载工具类 文章目录 Java-华为云OBS文件上传下载工具类 1.华为云obs文件上传下载 2.文件流转MultipartFile 3.File转换为Multipart ...

最新文章

  1. 你和你的好友,正在免费帮微信训练神经网络
  2. 瑟瑟发抖!2020年博士学位论文将抽查50%、硕士20%!
  3. [转载]日历设计之重复事件规则设计
  4. (视频) 基于HTML5的服务器远程访问工具
  5. 博客园7月底至8月初51Aspx源码发布详情
  6. caffe卷积层代码阅读笔记
  7. Tensorflow Day18 Convolutional Autoencoder
  8. MySQL数据库常见面试题总结
  9. 中科燕园GIS外包案例之五---地下管线GIS管理信息系统
  10. find_cmd函数分析
  11. 【Java】函数式编程
  12. 值得收藏的8个Web端组件库
  13. 缓存世界中的三大问题及解决方案
  14. PAIP.并发编程 多核编程 线程池 ExecutorService的判断线程结束
  15. Android Studio3.5 JAVA调用C++源码方法总结
  16. python 爬取链家二手房信息
  17. Excel辅助“校验”
  18. Python中的timezone
  19. 手机浏览器devtools_浏览器DevTools的秘诀:启动,网络和性能
  20. kafka报错Error while fetching metadata with correlation

热门文章

  1. java unsafe cas_java并发Unsafe和CAS
  2. html tab标签_如何用HTML写一个网页
  3. java 设计模式 抽象工厂_Java设计模式----------抽象工厂模式
  4. activity 工作流_智能风控决策引擎系统可落地实现方案(二)决策流实现
  5. 如何自定义安装mysql_安装MySQL
  6. 拖动获取元素_如何使用HTML5实现多个元素的拖放功能
  7. python3 yum源_Redhat7.3更换CentOS7 yum源
  8. 自动驾驶 5-3 前馈速度控制 Feedforward Speed Control
  9. 翻译:Google研究:回顾2020年并展望2021年 - Jeff Dean
  10. 极客大学架构师训练营 微服务架构 领域驱动设计DDD 中台架构、组件设计原则 第十次作业