批量更改文件编码格式(引入项目中文乱码)
来源:互联网 发布:caffe教程 编辑:程序博客网 时间:2024/06/06 18:06
在用eclipse引入工程的时候,引入张孝祥老师java高级特性的代码,.java文件格式是ANSI格式的, 包含中文,如果把这些代码
引入到工程里面,工程编码格式是utf-8,会出现乱码,所以在引入之前,先将所有的ANSI的文件,改成UTF-8编码格式
于是写了一个工具类,将工程源代码路径给程序代码,该工具类会生成UTF-8文件编码格式的文件,存放到目的路径。
注意:该工具类主要目的是改变.java文件的编码,如果不是文本文件,比如jar文件等,转换后的文件将有问题,建议jar文件直接从源码中拷贝
package net.dhh.util;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.nio.charset.Charset;/** * 编码转换器 * 问题描述: * 在用eclipse引入工程的时候,引入张孝祥老师java高级特性的代码,文件格式是ANSI格式的, 包含中文,如果把这些代码 * 引入到工程里面,工程编码格式是utf-8,会出现乱码,所以在引入之前,先将所有的ANSI的文件,改成UTF-8编码格式 * 于是写了一个工具类,将工程源代码路径给程序代码,该工具类会生成UTF-8文件编码格式的文件,存放到目的路径 * @author dhh * */public class CodingConvertUtil {public static void main(String[] args) {String srcDir = "G:\\2_Java高级特性\\java 深入教程 -张孝祥\\张孝祥Java高新技术_73_源代码\\javaenhance"; //工程源代码String destDir = "D:/desc"; //转换编码格式后的存放目录,该目录可以不存在createNewFile(srcDir, destDir);System.out.println("转换文件编码成功!!");}/** * 生成新的文件夹 * @param srcDir 源目录,一定是文件夹,不能这个工具类就没意义了,单个文件,直接另存为就完事了 * @param destDir 目的目录 */public static void createNewFile(String srcDir, String destDir){File srcFile = new File(srcDir);if(srcFile.isDirectory()){String name = srcFile.getName();File directory = new File(destDir+"/" + name);directory.mkdirs();File[] files = srcFile.listFiles();if(files!=null && files.length>0){for(File f : files){createNewFile(f.getAbsolutePath(), directory.getAbsolutePath());}}}else if(srcFile.isFile()){String filename = srcFile.getName();if(filename!=null && !filename.equals("")){if(filename.endsWith(".java")){ //如果是java文件//改文件的编码covert(srcFile, new File(destDir + "/" + filename));}else{//其他编码,直接原样保存saveDirectly(srcFile, new File(destDir + "/" + filename));}}}else{System.out.println("不是正确的目录");}}/** * 文件编码格式转换,转成UTF-8格式文件 * @param srcDir * @param destDir */private static String covert(File srcFile ,File destFile) {BufferedReader reader = null;BufferedWriter writer = null;//定义一个流try {InputStreamReader isr = new InputStreamReader(new FileInputStream(srcFile), Charset.forName("GBK"));reader = new BufferedReader(isr); //此时获取到的reader就是整个文件的缓存流FileOutputStream fos = new FileOutputStream(destFile);writer = new BufferedWriter(new OutputStreamWriter(fos, Charset.forName("UTF-8")));String str = "";while ((str = reader.readLine())!= null){ // 判断最后一行不存在,为空结束循环writer.write(str + "\r\n");};System.out.println("创建UTF-8格式文件:" + destFile.getName());}catch(Exception e){e.printStackTrace();}finally{try {if(writer!=null) writer.close();if(reader!=null) reader.close();} catch (Exception e2) {}}return null;}/** * 针对不是.java结尾的文件,直接在目的目录保存文件 * @param srcFile * @param destFile * @return */private static String saveDirectly(File srcFile ,File destFile) {BufferedReader reader = null;BufferedWriter writer = null;//定义一个流try {InputStreamReader isr = new InputStreamReader(new FileInputStream(srcFile));reader = new BufferedReader(isr); //此时获取到的reader就是整个文件的缓存流FileOutputStream fos = new FileOutputStream(destFile);writer = new BufferedWriter(new OutputStreamWriter(fos));String str = "";while ((str = reader.readLine())!= null){ // 判断最后一行不存在,为空结束循环writer.write(str + "\r\n");};}catch(Exception e){e.printStackTrace();}finally{try {if(writer!=null) writer.close();if(reader!=null) reader.close();} catch (Exception e2) {}}return null;}}
1 0
- 批量更改文件编码格式(引入项目中文乱码)
- 批量修改文件的编码格式-问题来自于用Source Insight打开项目时中文部分出现乱码
- 批量更改文件编码
- 批量更改文件编码
- 批量更改文件编码
- MyEclipse中文乱码,编码格式设置,文件编码格式
- MyEclipse中文乱码,编码格式设置,文件编码格式 总结
- MyEclipse中文乱码,编码格式设置,文件编码格式
- MyEclipse中文乱码,编码格式设置,文件编码格式
- eclipse批量更改文件编码
- eclipse批量更改文件编码
- EditPlus批量更改文件编码
- EditPlus批量更改文件编码
- eclipse下更改jsp页面默认的编码格式,解决中文乱码问题
- linux shell 批量更改文件编码格式 gbk到utf-8
- 修改表编码格式(解决中文乱码问题相关)
- 引入js文件时出现中文乱码
- 文件乱码,批量转换文件编码
- Android SQLite实现数据持久化存储购买商品小案例
- Cookie/Session机制详解
- 实习篇
- TabLayout实现底部导航栏
- win10移动 文档 下载 等到其他磁盘
- 批量更改文件编码格式(引入项目中文乱码)
- 注册表及其CRegKey类
- [编程题]字符串最后一个单词的长度
- POJ2186 Popular Cows 【强连通分量】+【Kosaraju】+【Tarjan】
- jz2440一些接口注意事项
- linux内存管理基本概念
- Web Service系列之实例之使用http.client发送SOAP POST请求
- Jquery中的offset()和position()的区别
- Java基础学习笔记:(十)static关键字