博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原创]使用java批量修改文件编码(ANSI-->UTF-8)
阅读量:5914 次
发布时间:2019-06-19

本文共 3397 字,大约阅读时间需要 11 分钟。

从网上下载的项目,有时候.java文件的编码是ANSI。导入到自己的MyEclipse后,查看项目源码的时候,总是乱码。

一个个.java去修改的话, 既麻烦又不现实。所以写了下面这个工具类,进行批量转编码。

代码的原理仅仅就是遍历文件,然后使用流,对按照文件的原编码进行读取,用目的编码进行写操作。

直接上源码:

package test;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class Main {	// private String sDirectory = "D:/Workspaces/BeyondDiscuz/src/com";	private String sDirectory = "D:\\Workspaces\\BeyondDiscuz\\src\\com";	private String dDirectory = "D:\\Workspaces\\BeyondDiscuz\\src\\cn";	public static void main(String[] args) {		Main 吗 = new Main();		try {			吗.readerFile(吗.sDirectory);		} catch (IOException e) {			e.printStackTrace();		}	}	public void readerFile(String filePath) throws IOException {		if ("".equals(filePath) || null == filePath) {			return;		}		File f = new File(filePath);		if (f.isDirectory()) {			String[] child = f.list();			for (int i = 0; i < child.length; i++) {				String path = f.getAbsolutePath() + File.separator;				String newPath = path.replace(this.sDirectory, this.dDirectory);				child[i] = path + child[i];				File c = new File(child[i]);				String newFile = child[i].replace(this.sDirectory, this.dDirectory);				System.out.println("旧路径:" + path);				System.out.println("新路径:" + newPath);				File newP = new File(newPath);				if (!newP.exists())					newP.mkdir();				if (c.isFile()) {					System.out.println("旧文件:" + child[i]);					System.out.println("新文件:" + newFile);					// Charset US-ASCII ISO-8859-1 UTF-8 UTF-16BE UTF-16LE UTF-16  					BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(c), "GBK"));					// BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(c)));					File newF = new File(newFile);					newF.createNewFile();					// BufferedWriter w = new BufferedWriter(new					// OutputStreamWriter(new FileOutputStream(newF), "UTF-8"));					BufferedWriter w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(newF)));					// BufferedWriter w = new BufferedWriter(new FileWriter(newFile));					String lineText = null;					while ((lineText = r.readLine()) != null) {						// String temp = new String(lineText.getBytes("ISO-8859-1"), "UTF-8");						w.write(lineText);						w.newLine();					}					w.close();					r.close();				} else {					readerFile(child[i]);				}			}		}	}}

 上面自己的写代码只是基本思路,下面是更简洁的代码:

public static void main(String[] args) {        try {            String srcDirPath = "E:\\eclipseWorkspaceSandbase\\test";            // 转为UTF-8编码格式源码路径            String utf8DirPath = "E:\\eclipseWorkspaceSandbase\\test-8";                // 获取所有java文件            Collection
javaGbkFileCol = FileUtils.listFiles(new File(srcDirPath), new String[] { "java" }, true); for (File javaGbkFile : javaGbkFileCol) { System.out.println(javaGbkFile); // UTF8格式文件路径 String utf8FilePath = utf8DirPath + javaGbkFile.getAbsolutePath().substring(srcDirPath.length()); // 使用GBK读取数据,然后用UTF-8写入数据 FileUtils.writeLines(new File(utf8FilePath), "UTF-8", FileUtils.readLines(javaGbkFile, "GBK")); } } catch (Exception e) {
e.printStackTrace(); } }

 

转载于:https://www.cnblogs.com/Candies/p/5040473.html

你可能感兴趣的文章
fprobe使用
查看>>
yum 安装rabbitMQ
查看>>
跟我学《JavaScript高程3》视频教程,下载地址
查看>>
GLSL变量
查看>>
使用nginx—搭建YUM仓库
查看>>
测试人员必学的软件快速测试方法(二)
查看>>
linux下以RPM包安装Oracle 客户端
查看>>
28. PowerShell -- 注册表操作
查看>>
artDialog-交互弹出插件_无效文章
查看>>
2015年后的九大企业级技术发展趋势
查看>>
搭建 android sdk环境
查看>>
LINUX常用的查看命令
查看>>
第14章 grep、sed、awk 正则表达式
查看>>
Game 游戏分类
查看>>
SCCM 2007 sp2 eva安装之一:sql server 2005安装及升级sp2
查看>>
电商企业适用基础快递接口对接demo
查看>>
通过chkconfig设置linux开机自启动服务- 老男孩Linux运维学习笔记1
查看>>
CENTOS 安装 jenkins
查看>>
Java思考题
查看>>
iptables详解
查看>>