原文:java讀取文件並獲得文件編碼,轉換爲指定編碼的工具類代碼
package com.zuidaima.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Test {
public static int fileCount = 0;
public static String sourceFileRoot = "D:/workspace/test/src/com/zuidaima/"; // 將要轉換文件所在的根目錄
public static String sourceCharset = "gbk"; // 源文件編碼
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) {
// 注意寫入換行符
sb.append(line + "\n");
}
br.close();
isr.close();
File targetFile = new File(file.getPath() + "." + targetCharset);
OutputStreamWriter osw = new OutputStreamWriter(
new FileOutputStream(targetFile), targetCharset);
BufferedWriter bw = new BufferedWriter(osw);
// 以字符串的形式一次性寫入
bw.write(sb.toString());
bw.close();
osw.close();
System.out.println("Deal:" + file.getPath());
fileCount++;
} else {
for (File subFile : file.listFiles()) {
convert(subFile);
}
}
}
}
該代碼可以把某個工程的gbk編碼java文件全部自動轉換爲utf-8編碼,在工作中很實用。