【转载】Java文件编码自动转换工具类
本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类:
通过读取源文件内容,用URLEncoding重新编码解码的方式实现。

1 public class ChangeFileEncoding {
2 public static int fileCount = 0;
3 public static String sourceFileRoot = "替换为要转换的源文件或源目录"; // 将要转换文件所在的根目录
4 public static String sourceCharset = "GB2312"; // 源文件编码
5 public static String targetCharset = "utf8"; // 目标文件编码
6 public static void main(String[] args) throws IOException {
7 File fileDir = new File(sourceFileRoot);
8 convert(fileDir);
9 System.out.println("Total Dealed : " + fileCount + "Files");
10 }
11
12 public static void convert(File file) throws IOException {
13 // 如果是文件则进行编码转换,写入覆盖原文件
14 if (file.isFile()) {
15 // 只处理.java结尾的代码文件
16 if (file.getPath().indexOf(".java") == -1) {
17 return;
18 }
19 InputStreamReader isr = new InputStreamReader(new FileInputStream(
20 file), sourceCharset);
21 BufferedReader br = new BufferedReader(isr);
22 StringBuffer sb = new StringBuffer();
23 String line = null;
24 while ((line = br.readLine()) != null) {
25 // 注意写入换行符
26 line = URLEncoder.encode(line, "utf8");
27 sb.append(line + "\r\n");//windows 平台下 换行符为 \r\n
28 }
29 br.close();
30 isr.close();
31
32 File targetFile = new File(file.getPath());
33 OutputStreamWriter osw = new OutputStreamWriter(
34 new FileOutputStream(targetFile), targetCharset);
35 BufferedWriter bw = new BufferedWriter(osw);
36 // 以字符串的形式一次性写入
37 bw.write(URLDecoder.decode(sb.toString(), "utf8"));
38 bw.close();
39 osw.close();
40
41 System.out.println("Deal:" + file.getPath());
42 fileCount++;
43 } else {
44 //利用递归对目录下的每个以.java结尾的文件进行编码转换
45 for (File subFile : file.listFiles()) {
46 convert(subFile);
47 }
48 }
49 }
50
51 }
【转载】Java文件编码自动转换工具类的更多相关文章
- Java文件编码自动转换工具类(只改变编码,不会改变文件内容)
本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. public class Cha ...
- 【Java】字节数组转换工具类
import org.apache.commons.lang.ArrayUtils; import java.nio.charset.Charset; /** * 字节数组转换工具类 */ publi ...
- C# Winform 文件编码批量转换工具
在发布产品程序包时,往往需要对程序文件进行编码检查,写了一个可以批量修改文件编码格式的辅助工具,希望对有同样需求的童鞋有帮助. 1.程序界面: 2.核心代码: /// <summary> ...
- [原]C# Winform 文件编码批量转换工具
在发布产品程序包时,往往需要对程序文件进行编码检查,写了一个可以批量修改文件编码格式的辅助工具,希望对有同样需求的童鞋有帮助. 1.程序界面: 2.核心代码: /// <summary> ...
- java多媒体文件编码、处理工具类
<dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</ ...
- 日期转换工具类 CommUtil.java
package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...
- c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习
c#中@标志的作用 参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...
- 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)
Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...
- java 二进制数字符串转换工具类
java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...
随机推荐
- android 多行文本显示的textView
package com.zhangyue.iReader.common.view; import android.content.Context; import android.graphics.Ca ...
- poj3348 Cows 凸包 叉积求多边形面积
graham扫描法,参考yyb #include <algorithm> #include <iostream> #include <cstdio> #includ ...
- 《Cracking the Coding Interview》——第17章:普通题——题目6
2014-04-28 22:49 题目:给定一个整数数组.如果你将其中一个子数组排序,那么整个数组都变得有序.找出所有这样子数组里最短的一个. 解法:线性时间,常数空间内可以解决,思想类似于动态规划. ...
- 《Cracking the Coding Interview》——第6章:智力题——题目4
2014-03-20 01:02 题目:无力描述的一道智力题,真是货真价实的智力题,让我充分怀疑自己智力的智力题.有兴趣的还是看书去吧. 解法:能把题目看懂,你就完成80%了,用反证法吧. 代码: / ...
- USACO Section2.2 Runaround Numbers 解题报告 【icedream61】
runround解题报告---------------------------------------------------------------------------------------- ...
- WebDriver--简单元素操作
clear():清除文本,可用来键盘输入前清除一些input输入框默认的值 send_key(*value):模拟按键输入 click():单击,不止按钮,也可以是文字/图片链接.复选框.单选框.下拉 ...
- shell之echo and printf
#!/bin/sh _________echo___________#read name #echo "$name It is a test" #read命令从标准的输入中读取一行 ...
- spring boot打war包启动Tomcat失败
Tomcat启动失败:最后一个causy by :java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getMa ...
- Servlet中文件上传
利用getReader()和getInputstream()上传 package control; import javax.servlet.ServletException; import java ...
- 【转载】10个最佳ES6特性
译者按: 人生苦短,我用ES6. 原文: Top 10 ES6 Features Every Busy JavaScript Developer Must Know 译者: Fundebug 为了保证 ...