package com.way.charset; import info.monitorenter.cpdetector.io.CodepageDetectorProxy; import info.monitorenter.cpdetector.io.JChardetFacade; import java.io.File; import java.io.FilenameFilter; import java.nio.charset.Charset; public class CharsetTest { public static void main(String[] args) { String path = "E:\\way\\svn\\workspace\\eBrowse\\src"; File f = new File( path); test1(f); } public static void test1(File f) { if(f.isFile()){ System.out.println(getFileCharacterEnding(f)); return; } File[] fArray = f.listFiles(new FilenameFilter() { public boolean accept(File dir, String name) { if(name.endsWith(".svn")){//过滤掉svn文件夹和文件 return false; } return true; } }); for (int i = 0; i < fArray.length; i++) { File tmp = fArray[i]; if (tmp.isDirectory()) { test1(tmp); } else { String encode = getFileCharacterEnding(tmp); if ("UTF-8".equals(encode)) { System.out.println(tmp); } } } } public static String getFileCharacterEnding(File file) { String fileCharacterEnding = "UTF-8"; CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance(); detector.add(JChardetFacade.getInstance()); Charset charset = null; // File f = new File(filePath); try { charset = detector.detectCodepage(file.toURL()); } catch (Exception e) { e.printStackTrace(); } if (charset != null) { fileCharacterEnding = charset.name(); } return fileCharacterEnding; } }
编译时因为有些java文件是utf-8,有些是gbk. 故要找出不一样的统一改掉,这里是改成gbk的 .
ant build.xml,linux与windows的区别好象是basedir=". " 而windows 是"./"