Java文件编码自动转换工具类(只改变编码,不会改变文件内容)
本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类:
通过读取源文件内容,用URLEncoding重新编码解码的方式实现。
public class ChangeFileEncoding {
public static int fileCount = 0;
public static String sourceFileRoot = "替换为要转换的源文件或源目录"; // 将要转换文件所在的根目录
public static String sourceCharset = "GB2312"; // 源文件编码
public static String targetCharset = "utf8"; // 目标文件编码
public static void main(String[] args) throws IOException {
File fileDir = new File(sourceFileRoot);
convert(fileDir);
System.out.println("Total Dealed : " + fileCount + "Files");
} public static void convert(File file) throws IOException {
// 如果是文件则进行编码转换,写入覆盖原文件
if (file.isFile()) {
// 只处理.java结尾的代码文件
if (file.getPath().indexOf(".java") == -1) {
return;
}
InputStreamReader isr = new InputStreamReader(new FileInputStream(
file), sourceCharset);
BufferedReader br = new BufferedReader(isr);
StringBuffer sb = new StringBuffer();
String line = null;
while ((line = br.readLine()) != null) {
// 注意写入换行符
line = URLEncoder.encode(line, "utf8");
sb.append(line + "\r\n");//windows 平台下 换行符为 \r\n
}
br.close();
isr.close(); File targetFile = new File(file.getPath());
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(targetFile), targetCharset);
BufferedWriter bw = new BufferedWriter(osw);
// 以字符串的形式一次性写入
bw.write(URLDecoder.decode(sb.toString(), "utf8"));
bw.close();
osw.close(); System.out.println("Deal:" + file.getPath());
fileCount++;
} else {
//利用递归对目录下的每个以.java结尾的文件进行编码转换
for (File subFile : file.listFiles()) {
convert(subFile);
}
}
} }
Java文件编码自动转换工具类(只改变编码,不会改变文件内容)的更多相关文章
- 【转载】Java文件编码自动转换工具类
本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. 1 public class C ...
- 【Java】字节数组转换工具类
import org.apache.commons.lang.ArrayUtils; import java.nio.charset.Charset; /** * 字节数组转换工具类 */ publi ...
- 日期转换工具类 CommUtil.java
package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...
- java 二进制数字符串转换工具类
java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...
- 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)
Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...
- txt文件按行处理工具类(可以截取小说、分析日志等)【我】
txt文件按行处理工具类(可以分析日志.截取小说等) package file; import java.io.BufferedReader; import java.io.BufferedWrite ...
- 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 ...
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- java中excel导入\导出工具类
1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...
随机推荐
- gtest 安装
1.下载,https://code.google.com/p/googletest/.解压,进入该目录,按REAME说明 安装:1.5之前 make install可以安装,1.6之后不可以...安装 ...
- JQuery 表格拖动调整列宽效果
类似于桌面程序中的表格拖动表头的效果,当鼠标停留在表头边框线上时,鼠标会变成表示左右拖动的形状,接着拖动鼠标,会在表格中出现一条随鼠标移动的竖线,最后放开鼠标,表格列宽会被调整.最近比较空闲,便自己动 ...
- Activity跳转时生命周期跟踪
1. 步骤1(打开First Activity):经过onCreate.onStart.onResume后First Activity就展现啦: 2. 步骤2(跳转至Second Activity): ...
- Hadoop学习笔记(老版本,YARN之前),MapReduce任务Namenode DataNode Jobtracker Tasktracker之间的关系
一.基本概念 在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出的运行于各个计算节点的工作单元称为“任务(task)”.此外,Hadoop提供的分布式文件系统 ...
- win10上安装Docker
方法1:具体我没有试过,不知道win10下可以么.http://blog.csdn.net/zistxym/article/details/42918339 方法2: 先安装VirtualBox(下载 ...
- Unity3d导出Android的apk文件时相关问题的解决办法
今天上午着手将一个unity3d开发的小游戏build到android手机上运行,结果遇到了不少问题. 首先遇到的第一个问题是在build到一半的时候,弹出如下报错: Error building P ...
- CLR via C#深解笔记五 - 事件
事件处理实际上是一种具有特殊签名的delegate, 像这个样子:public delegate void EventHandler(object sender, EventArgs e); 类型 ...
- 【开源】EFW框架系列文章索引
开源轻量级.Net框架EnterpriseFrameWork详解 ——自己动手写框架 ——适合中小企业的开发框架 ——Ajax+JqueryEasyUI+NotNetBar+MVC+WebServic ...
- Unity 坐标系
Unity 使用的是左手坐标系
- cocos2d-x中使用可加密Sqlite存储玩家数据
手机游戏当中的数据存储是一个重要的课题.cocos2d-x发展到现在的版本2.1.4,已经直接实现了对sqlite的支持(extensions/LocalStorage),这对我们一般的数据存储已经够 ...