import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.pdfbox.encryption.DecryptDocument;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;
import org.textmining.text.extraction.WordExtractor;
public class FileReader
{
/**
* Description:解析文件,返回文档内容 <br>
*
*
* @param logger
* Longger
* @param realPath
* String
* @return String
*/
public static String readOneFile(Logger logger, String realPath)
{
FileInputStream in = null;
BufferedReader reader = null;
String content = "";
try
{
File file = new File(realPath);
if (!file.canRead())
{
logger.error(MessageCode.getPageMessage("iiss.info.common.filenotread") + realPath);
return "";
}
String suffix = realPath.substring(realPath.lastIndexOf(".") + 1, realPath.length());
if ("doc".equalsIgnoreCase(suffix))
{
WordExtractor extractor = new WordExtractor();
content = extractor.extractText(new FileInputStream(file));
if (logger.isDebugEnabled())
{
logger.debug("summary=" + content);
}
}//解析excel文件
else if ("xls".equalsIgnoreCase(suffix))
{
StringBuffer rowData = new StringBuffer(KeyConstant.INITIAL_BUFFER);
in = new FileInputStream(file);
// 创建对Excel对象
HSSFWorkbook workbook = new HSSFWorkbook(in);
//获得excel的页数
int sheetNo = workbook.getNumberOfSheets();
if (sheetNo > 0)
{
for (int i = 0; i < sheetNo; i++)
{
// 获取每一页对象
HSSFSheet sheet = workbook.getSheetAt(i);
if (sheet != null)
{
//逐行获得内容
HSSFRow row = null;
for (int j = 0; j <= sheet.getLastRowNum(); j++)
{
try
{
row = sheet.getRow(j);
}
catch (Exception e)
{
row = null;
}
if (row == null)
{
continue;
}
//逐个单元格获得内容
HSSFCell cell = null;
String fieldValue = null;
for (int k = 0; k <= row.getLastCellNum() - 1; k++)
{
try
{
cell = row.getCell((short)k);
}
catch (Exception e)
{
cell = row.createCell((short)k);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("");
}
fieldValue = POITools.getCellValue(cell);
if (fieldValue != null && !"".equals(fieldValue))
{
rowData.append(fieldValue);
rowData.append("");
}
}
}
}
}
}
content = rowData.toString();
if (logger.isDebugEnabled())
{
logger.debug("summary=" + content);
}
}
else if ("txt".equalsIgnoreCase(suffix))
{
in = new FileInputStream(file);
reader = new BufferedReader(new InputStreamReader(in));
StringBuffer sBuffer = new StringBuffer();
String s = null;
do
{
s = reader.readLine();
if (s != null)
{
sBuffer.append(s);
}
} while (s != null);
content = sBuffer.toString();
if (logger.isDebugEnabled())
{
logger.debug("summary=" + content);
}
}
else if ("html".equalsIgnoreCase(suffix) || "htm".equalsIgnoreCase(suffix))
{
HTMLParser parser = new HTMLParser(file);
content = parser.getContent();
}
else if ("pdf".equalsIgnoreCase(suffix))
{
PDDocument pdf = null;
try
{
PDFParser parser = new PDFParser(new FileInputStream(file));
parser.parse();
pdf = parser.getPDDocument();
if (pdf.isEncrypted())
{
DecryptDocument decryptor = new DecryptDocument(pdf);
decryptor.decryptDocument("");
}
PDFTextStripper stripper = new PDFTextStripper();
content = stripper.getText(pdf);
if (logger.isDebugEnabled())
{
logger.debug("summary=" + content);
}
}
catch (Exception e)
{
logger.error(e, e);
}
catch (OutOfMemoryError t)
{
logger.error(t, t);
}
finally
{
try
{
if (pdf != null)
{
pdf.close();
}
}
catch (IOException e)
{
logger.error(MessageCode.getPageMessage("iiss.info.common.readfilefail") + realPath);
}
}
}
else
{
content = " ";
}
}
catch (FileNotFoundException e)
{
logger.error(MessageCode.getPageMessage("iiss.info.common.filenotfound") + realPath);
}
catch (IOException e)
{
logger.error(MessageCode.getPageMessage("iiss.info.common.readfilefail") + realPath);
}
catch (InterruptedException e)
{
logger.error(MessageCode.getPageMessage("iiss.info.common.readhtmlfilefail") + realPath);
}
catch (Exception e)
{
logger.error(MessageCode.getPageMessage("iiss.info.common.parsefilefail") + e, e);
}
finally
{
try
{
if (in != null)
{
in.close();
}
}
catch (IOException e)
{
logger.error(e, e);
}
try
{
if (reader != null)
{
reader.close();
}
}
catch (IOException e)
{
logger.error(e, e);
}
}
return content;
}
}
分享到:
相关推荐
java 按顺序读取文件 java 按顺序读取文件 java 按顺序读取文件
java文件读写操作大全java文件读写操作大全java文件读写操作大全java文件读写操作大全java文件读写操作大全
最近在用java的IO包下面的RandomAccessFile类读写中文文件时遇到了乱码问题,解决不了。于是索性自己写个类,可以进行中文文件读写而不乱码。 压缩包里提供了.jar包和源代码。 ************************************...
java中用FileUtil实现文件读写
java中读取目录下指定的文件
shp文件:地理信息系统,也被称作GIS,它主要的扩展类型是SHAPEFILE (.SHP),一个包含了矢量地理空间数据的流行文件格式,描述了几何形态,点,线和多边形...该方法通过java代码实现将shp文件的数据读取以及存入数据库
java读取文件方法大全 读取file流等技术
Java 读取文件操作 java中多种方式读文件 一、多种方式读文件内容。 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容
java 随机读写Java类文件 java 随机读写Java类文件 java 随机读写Java类文件
java文件读写,这是本人总结的java读写文件的一下操作 java文件读写,这是本人总结的java读写文件的一下操作 java文件读写,这是本人总结的java读写文件的一下操作
java实现文件读写操作,小例子,供大家参考
Java多线程读大文件 java多线程写文件:多线程往队列中写入数据
java读取局域网共享机器文件 java读取局域网共享机器文件
java 文件读写 java 文件读写java 文件读写 java 文件读写java 文件读写 java 文件读写java 文件读写 java 文件读写
java读取mpp文件,来生成mpp文件的jar包。
JAVA实现远程文件读取
Java读取excel,Excel是我们平时工作中比较常用的用于存储二维表数据的,JAVA也可以直接对Excel进行操作。
java读取TXT文件入库,java读取TXT文件入库,java读取TXT文件入库,
最近在用java的IO包下面的RandomAccessFile类读写中文文件时遇到了乱码问题,解决不了。于是索性自己写个类,可以进行中文文件读写而不乱码。 压缩包里提供了.jar包和源代码。1.2版本解决了前面版本读取文件速度慢的...
java如何读取文件 。把固定的文件读取到程序中来。