【转载】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 ...
随机推荐
- Linux 安装github并配置ssh
首先,你得有个github帐号. 1.用apt-get install git的方式安装git test@er:/$ sudo add-apt-repository ppa:git-core/ppa ...
- 15.3,redis持久化RDB与AOF
redis持久化 Redis是一种内存型数据库,一旦服务器进程退出,数据库的数据就会丢失,为了解决这个问题,Redis提供了两种持久化的方案,将内存中的数据保存到磁盘中,避免数据的丢失. RDB持久化 ...
- [bzoj1999][noip2007]Core树网的核
好久没写题解了.这题不算太水就写一下题解. 话说回来,虽然不水但是挺裸.可以说题意即一半题解了. 我猜粘了题面也没有人去看的,所以直接人话题意了. 给一棵树,点数1e6,(当年noip的n当然是只有3 ...
- com.squareup.okhttp.Interceptor
retrift 集成了okhttp,所以,我们以后就不用再单独的引用http的jar 了. 但是,今天遇到一个问题,就是okhttp是这样设置一些intercept的: private static ...
- Django的Field(字段)
字段 1.models.AutoField 自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=Tr ...
- Webpack标准配置
let htmlWebpckPlugin= require('html-webpack-plugin');//该组件能将src下面提定的html文件与打包后在js文件打包在一起module.expor ...
- luogu2221 [HAOI2012]高速公路
和sdoi的相关分析很像qwq,推柿子然后线段树搞搞 #include <iostream> #include <cstdio> using namespace std; ty ...
- 无限小数转分数POJ1930分析
将无限小数化为分数,有一套简单的公式.使其轻松表示出来. 循环节 例如:0.121212…… 循循环节为12. 公式 这个公式必须将循环节的开头放在十分位.若不是可将原数乘10^x(x为正整数) ...
- 《Cracking the Coding Interview》——第18章:难题——题目2
2014-04-29 00:59 题目:设计一个洗牌算法,效率尽量快点,必须等概率. 解法:每次随机抽一张牌出来,最后都抽完了,也就洗好了.时间复杂度O(n^2),请看代码. 代码: // 18.2 ...
- ssh-centos74.sh
#!/bin/bash sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config sed -i 's/#Us ...