package test.io;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class FindoutCharacterSetTest {
// static String srcDir = System.getProperty("user.dir") + "\\src";
static String srcDir = "D:\\ant_test\\dist\\sources";
int count = 1;
FileFilter filter = new JavaFileFilter();
public void doNext()throws Exception{
File sourceFile = new File(srcDir);
File[] list = sourceFile.listFiles(filter);
tarceCharacterSet(list);
}
public void tarceCharacterSet(File[] files)throws Exception{
for( File file : files){
if(file.isDirectory()){
tarceCharacterSet(file.listFiles(filter));
}else{
checkCharSetAndConvert(file);
}
}
}
public void checkCharSetAndConvert(File file)throws Exception{
InputStreamReader ins = new InputStreamReader(new FileInputStream(file));
String enc = ins.getEncoding().toLowerCase();
ins.close();
if("ms949".equals(enc) || "cp949".equals(enc)){
String newFileName = file.getAbsolutePath();
ins = new InputStreamReader(new FileInputStream(file), "MS949");
BufferedReader br = new BufferedReader(ins);
BufferedWriter bw =
new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(newFileName + ".uni"), "UTF-8"));
String str = null;
while ((str = br.readLine()) != null) {
bw.write(str);
bw.newLine();
}
br.close();
bw.close();
System.out.printf((count++) + " " + file.getAbsolutePath()+ "=%s%n", enc);
}
}
/**
* @param args
*/
public static void main(String[] args) throws Exception{
new FindoutCharacterSetTest().doNext();
}
}
class JavaFileFilter implements FileFilter{
public boolean accept(File file){
String name = file.getAbsolutePath().toLowerCase();
return
name.indexOf(".svn") == -1 &&
name.indexOf(".xml") == -1 &&
name.indexOf(".properties") == -1 ;
}
}
window에서는 변환후에 읽어 들이면 다시 ms949군요.
뭐가 잘 못 된 걸까요? ㅠㅠ;
Posted by 쏘장