完整项目带lib

参考
http://toyota2006.iteye.com/blog/540316

判断编码

  1. package change;
  2. import info.monitorenter.cpdetector.io.CodepageDetectorProxy;
  3. import info.monitorenter.cpdetector.io.JChardetFacade;
  4. import java.io.File;
  5. import java.nio.charset.Charset;
  6. public class EncodingUtil {
  7. public static String getFileEncoding(String filePath) {
  8. File file = new File(filePath);
  9. return getFileCharacterEnding(file);
  10. }
  11. /**
  12. * Try to get file character ending.
  13. * </p>
  14. * <strong>Warning: </strong>use cpDetector to detect file's encoding.
  15. *
  16. * @param file
  17. * @return
  18. */
  19. public static String getFileCharacterEnding(File file) {
  20. String fileCharacterEnding = "UTF-8";
  21. CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
  22. detector.add(JChardetFacade.getInstance());
  23. Charset charset = null;
  24. // File f = new File(filePath);
  25. try {
  26. charset = detector.detectCodepage(file.toURL());
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. if (charset != null) {
  31. fileCharacterEnding = charset.name();
  32. }
  33. return fileCharacterEnding;
  34. }
  35. public static void main(String[] args) {
  36. System.out.println(getFileEncoding("E:/code/myec_cyh/pingan_dmz/test.java"));
  37. System.out.println(getFileEncoding("E:/code/myec_cyh/pingan_dmz/src/cn/com/benyoyo/manage/core/DBUtil/PublicDao.java"));
  38. }
  39. }
转码
  1. package change;
  2. import java.io.File;
  3. import java.util.Collection;
  4. import org.apache.commons.io.FileUtils;
  5. /**
  6. *
  7. * @author sgy
  8. *
  9. *如果项目中同时存在有gb2312/gbk和utf8的文件,则将gb2312/gbk的转为utf8
  10. */
  11. public class ChangeEncoding {
  12. public static void main(String[] args) throws Exception {
  13. //GBK编码格式源码路径
  14. String srcDir = "E:\\pingan_dmz";
  15. //转为UTF-8编码格式源码路径
  16. String targetDirectory = "E:\\code\\myec_cyh\\pingan_dmz";
  17. //获取所有java文件
  18. Collection<File> srcDirFileCol = FileUtils.listFiles(new File(srcDir), new String[]{"java"}, true);
  19. for (File srcFile : srcDirFileCol) {
  20. String srcFilePath = srcFile.getAbsolutePath();
  21. //当为GB2312时才会转换为urf8
  22. String srcEncoding = EncodingUtil.getFileEncoding(srcFilePath);
  23. System.out.print(srcFile.getName()+":"+srcEncoding+" ");
  24. if ("GB2312" == srcEncoding || "GBK" == srcEncoding) {
  25. System.out.println();
  26. System.out.print(srcFile.getAbsolutePath());
  27. //UTF8格式文件路径
  28. String targetFilePath = targetDirectory+srcFilePath.substring(srcDir.length());
  29. //使用GBK读取数据,然后用UTF-8写入数据
  30. FileUtils.writeLines(new File(targetFilePath), "UTF-8", FileUtils.readLines( srcFile, srcEncoding));
  31. }
  32. }
  33. }
  34. }

附件列表

java文件转码的更多相关文章

  1. 从Java文件到字节码文件

    本文涉及的javac编译器来自openjdk. javac的目录地址为:解压目录/langtools/src/share/classes/com/sun/tools/javac/ javac编译器将J ...

  2. 9:关于Maven工程的文件标识(定义java文件源码,资源文件)

  3. Java文件操作源码大全

    Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...

  4. 小兔Java教程 - 三分钟学会Java文件上传

    今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...

  5. Eclipse JAVA文件注释乱码

    将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同. 总结网上的建议和自己的体 ...

  6. Java集合源码分析(二)ArrayList

    ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线 ...

  7. [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法

    eclipse 代码中文注释乱码 求解决 将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclips ...

  8. Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)

    最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...

  9. eclipse android 不会自动生成R.java文件和包的解决办法

    eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法   我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动 ...

随机推荐

  1. vue-methods方法与computed计算属性的差别

    好吧,我就是单纯的举个例子:实现显示变量 message 的翻转字符串 第一种:methods:我们可以通过在表达式中调用方法来达到同样的效果: 第二种:computed:计算属性 上面的2中方法都实 ...

  2. web 前端1 拾遗

    1.整体布局 三个div header body footer 2.div的居中 width:980px margin:0 auto 3.内联标签 inline #内联 无法使用高度.宽度 block ...

  3. Vue 基础 day05 webpack 3.x

    什么是webpack webpack 是前端的一个项目构建工具, 它是基于 Node.js 开发出来的一个前端工具 借助于webpack这个前端自动化构建工具, 可以完美实现资源的合并.打包.压缩.混 ...

  4. [2019杭电多校第一场][hdu6579]Operation(线性基)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题目大意是两个操作,1个是求[l,r]区间子序列的最大异或和,另一个是在最后面添加一个数. 如果 ...

  5. nginx入门(一)

    什么是nginx? nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5 ...

  6. 没有找到<context:component-scan base-package="">标签

    <?xml version="1.0" encoding="UTF-8"?> <!-- 指定Spring配置文件的Schema信息 --> ...

  7. js中跳出forEach循环

    缘由:近期在项目中使用lodash.js中的_.foreach方法处理数据,需要在满足条件时结束循环并不执行后面的js代码. 因为foreach中默认没有break方法.在尝试中使用了return f ...

  8. Linux性能优化从入门到实战:07 CPU篇:CPU性能优化方法

    性能优化方法论   动手优化性能之前,需要明确以下三个问题:   (1)如何评估性能优化的效果? 确定性能的量化指标.测试优化前的性能指标.测试优化后的性能指标.   量化指标的选择.至少要从应用程序 ...

  9. Linux性能优化从入门到实战:02 CPU篇:平均负载

    每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或 uptime 命令: $ uptime 22:22:17 up 2 days, 20:14, 1 user, load average: ...

  10. 常见3种Git服务器的构建

    学习Git不同的服务器形式,具体如下: - 创建SSH协议服务器 - 创建Git协议服务器 - 创建HTTP协议服务器 方案: Git支持很多服务器协议形式,不同协议的Git服务器,客户端就可以使用不 ...