本篇随笔主要介绍了一个用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文件编码自动转换工具类的更多相关文章

  1. Java文件编码自动转换工具类(只改变编码,不会改变文件内容)

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

  2. 【Java】字节数组转换工具类

    import org.apache.commons.lang.ArrayUtils; import java.nio.charset.Charset; /** * 字节数组转换工具类 */ publi ...

  3. C# Winform 文件编码批量转换工具

    在发布产品程序包时,往往需要对程序文件进行编码检查,写了一个可以批量修改文件编码格式的辅助工具,希望对有同样需求的童鞋有帮助. 1.程序界面: 2.核心代码: /// <summary> ...

  4. [原]C# Winform 文件编码批量转换工具

    在发布产品程序包时,往往需要对程序文件进行编码检查,写了一个可以批量修改文件编码格式的辅助工具,希望对有同样需求的童鞋有帮助. 1.程序界面: 2.核心代码: /// <summary> ...

  5. java多媒体文件编码、处理工具类

    <dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</ ...

  6. 日期转换工具类 CommUtil.java

    package com.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.ut ...

  7. 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 ...

  8. 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)

    Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...

  9. java 二进制数字符串转换工具类

    java 二进制数字符串转换工具类 将二进制转换成八进制 将二进制转换成十进制 将二进制转换成十六进制 将十进制转换成二进制 package com.iteye.injavawetrust.ad; i ...

随机推荐

  1. Java实现系统目录实时监听更新。

    SDK1.7新增的nio WatchService能完美解决这个问题.美中不足是如果部署在window系统下会出现莫名其妙的文件夹占用异常导致子目录监听失效,linux下则完美运行.这个问题着实让人头 ...

  2. 计算机指令集CISC与RISC

    当接触一新CPU时商家会首先描述它是RISC指令集,这意味着什么,从这个描述你能了解多少CPU特性信息? 复杂指令集计算机(CISC) 长期来,计算机性能的提高往往是通过增加硬件的复杂性来获得.随着集 ...

  3. Idea中maven依赖图查看

    技术交流群: 233513714 使用Intellij idea,想看看它的maven依赖图,根据eclipse的经验,不是很容易能找到Intellij idea对应的功能.在打开的pom.xml文件 ...

  4. linux下解压命令大全[转]

    本文是复制大神的博文, 供自己参考. 原文出处:http://www.cnblogs.com/eoiioe/archive/2008/09/20/1294681.html .tar 解包:tar xv ...

  5. Xcode 代码提示功能失效

    前言: 以前好像很少碰到Xcode中代码提示出问题的情况,最近经常遇到这个问题.没有了Xcode的智能提示,发现我已完全不会写代码了. 本来想吐槽下万恶的baidu,鉴于百度前端时间的各种(贴吧.竞价 ...

  6. DOS程序员手册(五)

    第8章磁           盘       学习编程语言,常常是从基本的输入和输出入手的(正如第5.6和第7章曾介绍的一 样).到目前为止,我们不仅学习了怎样输入和输出数据,还学习了如何进行数据操作 ...

  7. UIAutomator2、Appium、Robotium搭建环境与框架对比

    UIAutomator2.Appium.Robotium搭建环境与框架对比 一.框架介绍 Appium 特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生 ...

  8. python 3 直接使用reload函数报错

    reload()是python2 的内置函数可以直接使用,但是python3 直接使用此函数报错,需要导入importlib 模块 from importlib import reload

  9. 孤荷凌寒自学python第三十三天python的文件操作初识

     孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...

  10. Megacli查看Dell服务器Raid状态

    通常我们使用的DELL/HP/IBM三家的机架式PC级服务器阵列卡是从LSI的卡OEM出来的,DELL和IBM两家的阵列卡原生程度较高,没有做太多封装,可以用原厂提供的阵列卡管理工具进行监控:而HP的 ...