首页 > 代码库 > Java文件编码自动转换工具类
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\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 }
Java文件编码自动转换工具类
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。