Cpdetector检测文件编码

package jp.com.java;

import info.monitorenter.cpdetector.io.ASCIIDetector;
import info.monitorenter.cpdetector.io.CodepageDetectorProxy;
import info.monitorenter.cpdetector.io.JChardetFacade;
import info.monitorenter.cpdetector.io.ParsingDetector;
import info.monitorenter.cpdetector.io.UnicodeDetector;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

public class Encoding {
	public static void main(String[] args) throws Exception {
		File file = new File("C:\\Users\\Thinkpad\\Desktop\\UTF-8_BOM.txt");

		cpdetector(file);
	}

	private static void cpdetector(final File file) throws Exception {
		// ファイルは読まない場合、処理終了
		if (!file.canRead()) {
			return;
		}
		
		CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();

		// 詳細処理のメッセージを表示するか、falseは設定する場合、メッセージを表示しない
		detector.add(new ParsingDetector(true));

		// 全てファイルの文字コードをチェックする
		detector.add(JChardetFacade.getInstance());
		// ASCIIDetectorでASCIIをチェックする
		detector.add(ASCIIDetector.getInstance());
		// UnicodeDetectorでUnicodeグルプをチェックする
		detector.add(UnicodeDetector.getInstance());

		InputStream inputStream = new FileInputStream(file);

		BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); 

		Charset charset = detector.detectCodepage(bufferedInputStream, 3);
		
		if (charset != null) {
			System.out.println(file.getName() + "コードは:" + charset.name());
		} else {
			System.out.println(file.getName() + "しらない");
		}
	}
}

你可能感兴趣的:(文件编码)