[原创]使用java批量修改文件编码(ANSI-->UTF-8)
从网上下载的项目,有时候.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<File> 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();
        }
    }
[原创]使用java批量修改文件编码(ANSI-->UTF-8)的更多相关文章
- Java 批量修改文件夹里面的文件的名字
		背景:公司要求使用PADS完成原理图设计.PCB Layout.而他硬件工程师要求我在将PADS的库文件发送给他们之前,必须在每一个库文件的后面追加今天的日期,再发送给他们. 问题来了,如果一次需要发 ... 
- 分享一个批量修改文件编码的python脚本
		分享一个自己编写的递归查找子目录,将所有cpp文件编码修改为utf-8编码格式的小脚本 #i!/usr/bin/env python3 # -*- coding:utf-8 -*- import os ... 
- Linux下批量修改文件编码
		假设需要将所有afish目录下的php文件,编码从gb2312转到utf8 cd afish find ./ -type f -name “*.php”|while read line;do echo ... 
- Java 批量修改文件后缀
		import java.io.*; public class test { public void reName(String path, String from, String to) { File ... 
- iconv 批量修改文件编码
		iconv_shell.sh #!/bin/bash "];then echo "Usage: `basename $0` dir filter" exit fi dir ... 
- Java实现批量修改文件名称
		import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; /** ... 
- Windows批量修改文件
		如图我是建立了壁纸文件夹 Windows自带的排序方式 如何不用自带的呢? 在这个文件夹里面建一个.txt文件 如下 ok第二步骤 将UTF-8格式改为ANSI格式 点击文件-另存为ANSI格式-替换 ... 
- Ubuntu 查看/修改文件编码
		使用enca工具可以查看和修改文件编码 1.安装 sudo apt-get install enca 2.使用 查看文件编码 enca –L zh_CN file_name 修改文件编码 enca – ... 
- 用SSH指令批量修改文件夹 文件权限和拥有者
		在linux系统下或登录ssh可以批量修改文件权限 wwwroot目录下的所有目录的权限递归设置为755 cd wwwrootfind -type d -exec chmod 755 {} \;或者是 ... 
随机推荐
- 删除ibus之后导致系统设置进不了
			sudo apt-get instal ubuntu-desktop 快捷键调出sogou拼音,默认为"ctrl+," 
- 移动端a标签点击图片有阴影处理
			移动端我们在点击页面中的一些图片的时候会出现阴影.处理方法只要给a标签加上 a { -webkit-tap-highlight-color: transparent; -webkit-touch-ca ... 
- Redis-cluster集群【第一篇】:redis安装及redis数据类型
			Redis介绍: 一.介绍 redis 是一个开源的.使用C语言编写的.支持网络交互的.可以基于内存也可以持久化的Key-Value数据库. redis的源码非常简单,只要有时间看看谭浩强的C语言,在 ... 
- 浅谈JavaScript中的Ajax
			引言 作为一名WEB开发者,我想Ajax技术是一定需要掌握的.你也许平时没有使用JavaScript真正的写过Ajax.但是你一定使用过JQuery里面的相关函数来进行异步调用.今天我们就来介绍下原生 ... 
- javascript取一周的日期
			上代码: <script> var today = new Date(); for (var i = 0; i < 7; i++) { today.setDate(today.get ... 
- mysql中获取一天、一周、一月时间数据的各种sql语句写法
			今天抽时间整理了一篇mysql中与天.周.月有关的时间数据的sql语句的各种写法,部分是收集资料,全部手工整理,自己学习的同时,分享给大家,并首先默认创建一个表.插入2条数据,便于部分数据的测试,其中 ... 
- MobClick详解
			1.使用自定义事件 使用自定义事件功能请先在网站应用管理后台(设置->编辑自定义事件)中添加相应的自定义事件后,服务器才会对相应的自定义事件请求进行处理.这里我们将提供几个简单而通用的接口: 1 ... 
- Markdown语言详解
			相信大家在github上面分享了不少的项目和Demo,每次创建新项目的时候,使用的都是默认的README.md文件,也不曾对这个文件有过什么了解.但是在看到别人写的项目的README.md里面竟然有图 ... 
- Java中的char到底是多少个字节?
			貌似一个简单的问题(也许还真是简单的)但是却把曾经自认为弄清楚的我弄得莫名其妙 char在Java中应该是16个字节byte在Java中应该是8个字节char x = '编'; //这样是合法的,输出 ... 
- 百万级数据查询到datatable中,提示内存溢出
			参考资料: http://group.cnblogs.com/topic/32230.html 
