/** * @file CharsetDetectorProxy.java * * @revision: none * * @version 0.0.01 * @author: Zenki (zhajun), zenki2001cn@163.com * @date: 2011-6-22 上午10:06:10 */ package com.easyview.ebook.reader.engine.util.charsetcodec; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import org.geometerplus.fbreader.library.Book; import com.easyview.ebook.reader.engine.util.Logger; public class CharsetDetectorProxy { static private final String TAG = "CharsetDetectorProxy"; private InputStream mStream; private ArrayList<ICharsetDetect> mDetectorList; private final String DEFAULT_CHARSET = "GB2312"; public CharsetDetectorProxy(Book book) { try { mStream = new FileInputStream(new File(book.File.getPath())); } catch (IOException e) { e.printStackTrace(); } initDetector(); } public String getDecodeName() { String decode = DEFAULT_CHARSET; String temp = null; for (ICharsetDetect detect : mDetectorList) { if (detect != null) { temp = detect.detectCodepage(mStream, 2048); if (temp != null) { decode = temp; Logger.dLog(TAG, "getDecodeName = " + decode); break; } } } return decode; } private void initDetector() { mDetectorList = new ArrayList<ICharsetDetect>(); mDetectorList.add(new UnicodeDetector()); mDetectorList.add(new JCharDetector()); } }