博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java文件编码自动转换工具类(只改变编码,不会改变文件内容)
阅读量:5330 次
发布时间:2019-06-14

本文共 2167 字,大约阅读时间需要 7 分钟。

  本篇随笔主要介绍了一个用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\n28             }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 }

 

 

    

转载于:https://www.cnblogs.com/Michaelwjw/p/5929425.html

你可能感兴趣的文章
SDL(01-10)
查看>>
网络爬虫基本原理(一)
查看>>
IM开发通信协议基础知识(一)---TCP、UDP、HTTP、SOCKET
查看>>
Android Studio 创建/打开项目时一直处于Building“project name”Gradle project info 的解决...
查看>>
mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
查看>>
分层图最短路【bzoj2763】: [JLOI2011]飞行路线
查看>>
FastReport.Net使用:[18]形状(Shape)控件用法
查看>>
asp.net学习笔记1
查看>>
linux下编译复数类型引发的错误:expected unqualified-id before '(' token
查看>>
sed用法
查看>>
codeforces 1041A Heist
查看>>
centos 7 升级python2.7 到3.5
查看>>
字典常用方法
查看>>
打开图片
查看>>
Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
查看>>
python的猴子补丁monkey patch
查看>>
架构模式: API网关
查看>>
正则验证积累
查看>>
Linux学习-汇总
查看>>
jQuery瀑布流+无限加载图片
查看>>