java文件转码

判断编码
package change;import info.monitorenter.cpdetector.io.CodepageDetectorProxy;import info.monitorenter.cpdetector.io.JChardetFacade;import java.io.File;import java.nio.charset.Charset;public class EncodingUtil {public static String getFileEncoding(String filePath) {File file = new File(filePath);return getFileCharacterEnding(file);}/*** Try to get file character ending.* </p>* <strong>Warning: </strong>use cpDetector to detect file's encoding.** @param file* @return*/public static String getFileCharacterEnding(File file) {String fileCharacterEnding = "UTF-8";CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();detector.add(JChardetFacade.getInstance());Charset charset = null;// File f = new File(filePath);try {charset = detector.detectCodepage(file.toURL());} catch (Exception e) {e.printStackTrace();}if (charset != null) {fileCharacterEnding = charset.name();}return fileCharacterEnding;}public static void main(String[] args) {System.out.println(getFileEncoding("E:/code/myec_cyh/pingan_dmz/test.java"));System.out.println(getFileEncoding("E:/code/myec_cyh/pingan_dmz/src/cn/com/benyoyo/manage/core/DBUtil/PublicDao.java"));}}
package change;import java.io.File;import java.util.Collection;import org.apache.commons.io.FileUtils;/**** @author sgy**如果项目中同时存在有gb2312/gbk和utf8的文件,则将gb2312/gbk的转为utf8*/public class ChangeEncoding {public static void main(String[] args) throws Exception {//GBK编码格式源码路径String srcDir = "E:\\pingan_dmz";//转为UTF-8编码格式源码路径String targetDirectory = "E:\\code\\myec_cyh\\pingan_dmz";//获取所有java文件Collection<File> srcDirFileCol = FileUtils.listFiles(new File(srcDir), new String[]{"java"}, true);for (File srcFile : srcDirFileCol) {String srcFilePath = srcFile.getAbsolutePath();//当为GB2312时才会转换为urf8String srcEncoding = EncodingUtil.getFileEncoding(srcFilePath);System.out.print(srcFile.getName()+":"+srcEncoding+" ");if ("GB2312" == srcEncoding || "GBK" == srcEncoding) {System.out.println();System.out.print(srcFile.getAbsolutePath());//UTF8格式文件路径String targetFilePath = targetDirectory+srcFilePath.substring(srcDir.length());//使用GBK读取数据,然后用UTF-8写入数据FileUtils.writeLines(new File(targetFilePath), "UTF-8", FileUtils.readLines( srcFile, srcEncoding));}}}}
附件列表
java文件转码的更多相关文章
- 从Java文件到字节码文件
本文涉及的javac编译器来自openjdk. javac的目录地址为:解压目录/langtools/src/share/classes/com/sun/tools/javac/ javac编译器将J ...
- 9:关于Maven工程的文件标识(定义java文件源码,资源文件)
- Java文件操作源码大全
Java文件操作源码大全 1.创建文件夹 52.创建文件 53.删除文件 54.删除文件夹 65.删除一个文件下夹所有的文件夹 76.清空文件夹 87.读取文件 88.写入文件 99.写入随机文件 9 ...
- 小兔Java教程 - 三分钟学会Java文件上传
今天群里正好有人问起了Java文件上传的事情,本来这是Java里面的知识点,而我目前最主要的精力还是放在了JS的部分.不过反正也不麻烦,我就专门开一贴来聊聊Java文件上传的基本实现方法吧. 话不多说 ...
- Eclipse JAVA文件注释乱码
将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclipse编码格式不同. 总结网上的建议和自己的体 ...
- Java集合源码分析(二)ArrayList
ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线 ...
- [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法
eclipse 代码中文注释乱码 求解决 将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclips ...
- Java学习-039-源码 jar 包的二次开发扩展实例(源码修改)
最近在使用已有的一些 jar 包时,发现有些 jar 包中的一些方法无法满足自己的一些需求,例如返回固定的格式,字符串处理等等,因而需要对原有 jar 文件中对应的 class 文件进行二次开发扩展, ...
- eclipse android 不会自动生成R.java文件和包的解决办法
eclipse下编写android程序突然不会自动生成R.java文件和包的解决办法 我的eclipse原来是好好的,什么问题都没有的,结果今天一打开新建一个android程序,发现工程里不会自动 ...
随机推荐
- altium学习之常用快捷键
1.放大缩小:常用方法,ctrl+鼠标滚轮,鼠标中键+移动鼠标,pgup.pgup. 2.切换不同的布线层:ctrl+shift+鼠标滚轮 3.在SCH或者PCB 同一平面内左右翻转:ctrl+X 4 ...
- failed to create process ,pip报错问题
- logstash异常
logstash异常 1 2 3 Unrecognized VM option 'UseParNewGC' Error: Could not create the Java Virtual Machi ...
- 简述Vue中的计算属性
1.什么是计算属性 如果模板中的表达式存在过多的逻辑,那么模板会变得臃肿不堪,维护起来也异常困难,因此为了简化逻辑出现了计算属性: <template> <div id=" ...
- oracle--表类型
- HackGame2 writeup
网址:http://hackgame.blackbap.org/ 第一关 突破客户端:无论输入什么密码都会提示"密码不能为空",使用浏览器检查网页元素会发现提交时会触发 javas ...
- C/C++二维数组名和二级指针
转载 :https://blog.csdn.net/wu_nan_nan/article/details/51741030 作者:吴一奇 1. 指针1.1 一个指针包含两方面:a) 地址值:b) 所 ...
- python学习第四十八天json模块与pickle模块差异
在开发过程中,字符串和python数据类型进行转换,下面比较python学习第四十八天json模块与pickle模块差异. json 的优点和缺点 优点 跨语言,体积小 缺点 只能支持 int st ...
- Angular ngTemplateOutlet
虽然我们可以通过使用 ViewContainerRef 将 ElementRef创建的视图插入指定的位置,但是仍然希望有某中快捷的方式帮我们实现. ngTemplateOutlet与ngCompone ...
- Python 数据分析中金融数据的来源库和简单操作
目录 金融数据 pandas-datareader TuShare 金融学图表 案例 金融数据 数据分析离不开数据的获取,这里介绍几种常用的获取金融方面数据的方法. pandas-datareader ...