本帖最后由 nettman 于 2015-4-16 22:40 编辑
问题导读
1.ClassUtil类中的方法的作用是什么?
2.CharsetUtil类工具类用途是什么?
3.如何使用第三方jar包检测文件的编码?
接上篇
基于lucene的案例开发10:搜索后台基础,JsonUtil & XmlUtil类介绍
这篇博客主要介绍ClassUtil类和CharsetUtil类。这两个也是项目中比较常用的类,一个用于指定文件路径,一个用于检测文件的编码方式。
ClassUtil
ClassUtil类中的方法主要是返回class文件所在的文件目录或工程的根目录地址,这主要用于指定工程中配置文件的路径,不至于环境迁移而导致配置文件路径错误。源代码如下:
- /**
- * @Description: 类工具
- */
- package com.lulei.util;
-
- public class ClassUtil {
-
- /**
- * @param c
- * @return
- * @Description: 返回类class文件所在的目录
- */
- public static String getClassPath(Class<?> c) {
- return c.getResource("").getPath().replaceAll("%20", " ");
- }
-
- /**
- * @Description:
- * @param c
- * @param hasName 是否显示文件名
- * @return 返回类class文件的地址
- */
- public static String getClassPath(Class<?> c, boolean hasName) {
- String name = c.getSimpleName() + ".class";
- String path = c.getResource(name).getPath().replaceAll("%20", " ");
- if (hasName) {
- return path;
- } else {
- return path.substring(0, path.length() - name.length());
- }
- }
-
- /**
- * @Description: 返回类class文件所在的顶级目录
- * @param c
- * @return
- */
- public static String getClassRootPath(Class<?> c) {
- return c.getResource("/").getPath().replaceAll("%20", " ");
- }
-
- public static void main(String[] args) {
- System.out.println(ClassUtil.getClassPath(ClassUtil.class, true));
- System.out.println(ClassUtil.getClassPath(Math.class, true));
- System.out.println(ClassUtil.getClassRootPath(Math.class));
- }
- }
复制代码
main函数运行结果如下:
CharsetUtil
CharsetUtil类是基于cpdetector第三方jar包实现的编码检测工具类。如果接触过实际项目,你绝对会碰到程序读取文件乱码或更新运营文件网站就无法正常显示等一系列问题,而这些问题多数都是因为文件编码问题导致的。当然这个工具类,在下一部分的爬虫程序中也扮演着重要的角色。源程序如下:
- /**
- *@Description: 编码方式检测类
- */
- package com.lulei.util;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URL;
- import java.nio.charset.Charset;
-
- 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;
-
- public class CharsetUtil {
- private static final CodepageDetectorProxy detector;
-
- static {//初始化探测器
- detector = CodepageDetectorProxy.getInstance();
- detector.add(new ParsingDetector(false));
- detector.add(ASCIIDetector.getInstance());
- detector.add(UnicodeDetector.getInstance());
- detector.add(JChardetFacade.getInstance());
- }
-
- /**
- * @param url
- * @param defaultCharset
- * @Author:lulei
- * @return 获取文件的编码方式
- */
- public static String getStreamCharset (URL url, String defaultCharset) {
- if (url == null) {
- return defaultCharset;
- }
- try {
- //使用第三方jar包检测文件的编码
- Charset charset = detector.detectCodepage(url);
- if (charset != null) {
- return charset.name();
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- return defaultCharset;
- }
-
- /**
- * @param inputStream
- * @param defaultCharset
- * @return
- * @Author:lulei
- * @Description: 获取文件流的编码方式
- */
- public static String getStreamCharset (InputStream inputStream, String defaultCharset) {
- if (inputStream == null) {
- return defaultCharset;
- }
- int count = 200;
- try {
- count = inputStream.available();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- try {
- //使用第三方jar包检测文件的编码
- Charset charset = detector.detectCodepage(inputStream, count);
- if (charset != null) {
- return charset.name();
- }
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- return defaultCharset;
- }
-
- public static void main(String[] args) throws Exception {
- URL url = new URL("http://www.csdn.net");
- System.out.println(CharsetUtil.getStreamCharset(url, "default"));
- }
- }
复制代码
main函数运行结果如下:
相关内容:
基于lucene的案例开发1:lucene初始认知
基于lucene的案例开发2:索引数学模型
基于lucene的案例开发3:索引文件结构
基于lucene的案例开发4:创建索引
基于lucene的案例开发5:搜索索引
基于lucene的案例开发6:分词器介绍
基于lucene的案例开发7:Query查询
基于lucene的案例开发8:IndexSearcher中检索方法
基于lucene的案例开发9:案例初识
基于lucene的案例开发10:搜索后台基础,JsonUtil & XmlUtil类介绍
基于lucene的案例开发11:项目常用类ClassUtil & CharsetUtil介绍
基于lucene的案例开发12:数据库连接池
基于lucene的案例开发13:实现实时索引基本原理
基于lucene的案例开发14:实时索引管理类IndexManager
基于lucene的案例开发15:实时索引的检索
基于lucene的案例开发16:实时索引的修改
基于lucene的案例开发17:查询语句创建PackQuery
基于lucene的案例开发18:纵横小说更新列表页抓取
基于lucene的案例开发19:纵横小说简介页采集
基于lucene的案例开发20:纵横小说章节列表采集
基于lucene的案例开发21:纵横小说阅读页采集
http://blog.csdn.net/xiaojimanman/article/category/2841877
|