`

Java获取TXT文本和Word文件的内容并显示在页面

    博客分类:
  • Java
阅读更多

Java获取TXT文本和Word文件的内容并显示在页面

 

注意2003版本的word和2007以上的word需要用不同的jar包来获取!

1.TXT文本:

import java.io.BufferedReader;
import java.io.FileReader;

StringBuffer texts =new StringBuffer();    
BufferedReader br = new BufferedReader(new FileReader(file)); //
String line = null;  
while ((line = br.readLine()) != null) {   
      texts.append(line);  
}  
br.close(); 

注意:按照上面的方式,会出现中文乱码问题!

 

解决方式:加上编码转换

StringBuffer texts =new StringBuffer();    
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "UTF-8");//加上编码转换
BufferedReader read = new BufferedReader(isr);
String line = null;  
while ((line = br.readLine()) != null) {   
      texts.append(line);  
}  
br.close(); 

 

 

2.Word2003——doc格式:

import java.io.FileInputStream;
import org.apache.poi.hwpf.extractor.WordExtractor;

try {

    FileInputStream inputStream = new FileInputStream(file);
    WordExtractor extractor = new WordExtractor(inputStream);
    text = extractor.getText();

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

 

或者

import java.io.FileInputStream;
import org.textmining.text.extraction.WordExtractor;//引入包不同

try {

    FileInputStream inputStream = new FileInputStream(file);
    WordExtractor extractor = new WordExtractor();//此处无参数
    text = extractor.getText(inputStream);//此处有参数

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}

注意注释的不同之处!

 

3.Word2007及以上版本——docx格式:

使用到的 jar 包
* poi-3.9-20121203.jar
* poi-ooxml-3.9-20121203.jar
* poi-ooxml-schemas-3.9-20121203.jar
* poi-scratchpad-3.9-20121203.jar
* xmlbeans-2.3.0.jar
* dom4j-1.6.1.jar

import org.apache.poi.POIXMLDocument;
import org.apache.poi.POIXMLTextExtractor;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;

try {

    OPCPackage opcPackage = POIXMLDocument.openPackage(filePath);
    POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
    text = extractor.getText();

} catch (IOException e) {
    e.printStackTrace();
} catch (XmlException e) {
    e.printStackTrace();
} catch (OpenXML4JException e) {
    e.printStackTrace();
}

 

 

4.实例分析:

long id = Long.valueOf(request.getParameter("id"));
PolicyDao policyDao = new PolicyDao();
Policy policy = policyDao.getPolicy(id);
//读取文件中的内容
StringBuffer fileContent = new StringBuffer();
String fileName = policy.getFilePath();
String uploadPath = Configuration.getConfig().getString("policyFilesPath");
File file = new File(uploadPath+fileName);
if(file.exists()){
	String suffix = file.getName().substring(file.getName().lastIndexOf(".")+1);
	//Word2003
	if (suffix.equals("doc")) {
		FileInputStream fis = new FileInputStream(file);
		WordExtractor wordExtractor = new WordExtractor(fis);
		String text = wordExtractor.getText();
		fileContent.append(text);
	}
	//Word2007
	else if (suffix.equals("docx")) {
		OPCPackage opcPackage = POIXMLDocument.openPackage(uploadPath+fileName);
        POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage);
        String text = extractor.getText();
        fileContent.append(text);
	}
	//TXT
	else if (suffix.equals("txt")) {
		BufferedReader bufferReader = new BufferedReader(new InputStreamReader(new FileInputStream(file),"utf-8"));
        //每从BufferedReader对象中读取一行字符。
        String line = null;
        while((line=bufferReader.readLine()) !=null){
        	fileContent.append(line);
        }
        bufferReader.close();
	}
}else{
    System.out.println("文件不存在!");
}
//输出
request.setAttribute("content", fileContent);
request.setAttribute("name", policy.getTitle());
request.setAttribute("id", policy.getId());
request.getRequestDispatcher("/frontShow/document-info.jsp").forward(request, response);
return;

 

 

出现类似于: IOException:Unable to read entire block; 362 bytes read; expected 512 bytes的异常

 

解决办法:既然expected 512 bytes ,那我就写够512bytes

ByteArrayOutputStream byteOS = new ByteArrayOutputStream(); 

FileInputStream fis = new FileInputStream(fileToBeRead);  

byte[] by = new byte[512];  

int t = fis.read(by,0,by.length); 

while(t>0){   byteOS.write(by, 0, 512);  //这里别写成t,写够512,呵呵,SB的方法对付SB的java API

     t = fis.read(by,0,by.length);  

} 

byteOS.close();  

InputStream byteIS = new ByteArrayInputStream(byteOS.toByteArray());  

HSSFWorkbook workbook = new HSSFWorkbook(byteIS);

 

实例如下:

if(file.exists()){
	String suffix = file.getName().substring(file.getName().lastIndexOf(".")+1);
	if (suffix.equalsIgnoreCase("doc")) {
		FileInputStream fis = new FileInputStream(file);
		/*byte buf[] = IOUtils.toByteArray(fis);
		ByteArrayInputStream bs = new ByteArrayInputStream(buf);*/
		ByteArrayOutputStream byteOS = new ByteArrayOutputStream(); 
		byte[] by = new byte[512];  
		int t = fis.read(by,0,by.length); 
		while(t>0){byteOS.write(by, 0, 512);  //这里别写成t,写够512,呵呵,SB的方法对付SB的java API
			t = fis.read(by,0,by.length);  
		} 
		InputStream byteIS = new ByteArrayInputStream(byteOS.toByteArray());  
		WordExtractor wordExtractor = new WordExtractor(byteIS);
		String text = wordExtractor.getText();
		fileContent.append(text);
		fis.close();
		byteOS.close();
		byteIS.close();
	}
......

 

分享到:
评论

相关推荐

    java 利用POI读取Word文件中的内容

    在Java编程语言中,Apache POI是一个非常流行的库,它允许开发者处理Microsoft Office格式的文件,包括Word(.doc和.docx)文档。本篇将详细介绍如何利用Apache POI库来读取Word文件中的内容。 首先,理解Apache ...

    java将html文件生成word文件

    在IT行业中,转换文件格式是一项常见的任务,尤其是在处理文档时。本示例主要涉及的是将HTML文件转换为Word文档,具体使用的是Java库——docx4j。这个库提供了强大的功能,可以方便地进行XML、XSL-FO到OpenXML(包括...

    java实现两个word文件进行比较

    在Java编程环境中,实现两个Word文档的比较是一项常见的任务,特别是在文档处理或自动化测试的场景中。本篇文章将深入探讨如何使用Java技术有效地完成这个任务,重点在于理解文档的结构、选择合适的库以及如何标记...

    Java根据word 模板,生成自定义内容的word 文件

    在IT行业中,生成自定义内容的Word文件是一个常见的需求,特别是在自动化报告、文档生成或个性化信函等场景。Java提供了一些强大的库来实现这个功能,其中就包括利用Word模板生成自定义内容。在这个案例中,我们将...

    java之jacob实现获取word文件的内容

    读取word文件的内容,并将内容返回为String类型!

    java实现读取word文件并且上传到数据库

    本项目关注的是如何使用Java来实现读取Microsoft Word文件,并将其中的数据上传到数据库,以此提升数据录入的效率。这一过程涉及到多个技术点,包括文件I/O、Word文档解析、数据库操作以及可能的数据转换。 首先,...

    java实现word中文转英文

    在Java编程环境中,实现Word文档中的中文到英文的转换是一项技术挑战,但通过利用特定的库和API,这个任务是可以完成的。以下是一篇详细解释如何实现这一目标的文章。 首先,我们需要选择一个能够处理Microsoft ...

    详解Java无需解压直接读取Zip文件和文件内容

    Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...

    java读取txt文件内容(java快速读取,程序已调试通)

    java读取txt文件,可以以文件路径构造这个流,:FileInputStream fin = new FileInputStream("d:/test.txt"); 然后使用这个流直接读取到文件,再使用reader构造BufferedReader,按行读取一整行的文本,作为字符串返回...

    Java去重txt文件内容(按行)

    "Java去重txt文件内容(按行)"这个主题涉及到如何利用Java语言有效地读取TXT文件,并通过比较两份文件的内容来消除重复的行。在这个过程中,Java 8引入的新特性——流(Stream)和并行流(Parallel Stream)起到了关键...

    java多个word文件合并.zip

    在Java编程环境中,合并多个Word文档是一个常见的任务,特别是在处理大量文档数据时。本文将详细介绍两种不同的方法来实现这一功能,结合给定的资源"java多个word文件合并.zip",我们将探讨如何使用JACOB库和Apache ...

    JAVA读取WORD_EXCEL_POWERPOINT_PDF文件的方法(poi)

    JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法(poi) JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法是使用 ...使用 Apache POI 库可以轻松地读取 WORD_EXCEL_POWERPOINT_PDF 文件,并提取其中的文本内容。

    java操作word可操作书签

    1. **解压 .docx 文件**:使用 `java.util.ZipFile` 类来打开并读取 .docx 文件,获取 `word/document.xml` 的 `ZipEntry`。 2. **解析 XML**:使用 `javax.xml.parsers.DocumentBuilderFactory` 和 `...

    Java读取Word文档页数

    在Java编程环境中,读取和处理Word文档通常涉及到使用第三方库,因为Java标准库并不直接支持Word文件的操作。本主题将深入探讨如何利用给定的`itextpdf-5.5.9.jar`和`jacob.jar`这两个库来实现Java读取Word文档页数...

    java导出word、excel、pdf、txt文件,同时兼容office2003和office2007

    在处理文件导出,尤其是办公文档如Word、Excel、PDF和TXT时,Java提供了多个库来帮助开发者实现这些功能。本教程将详细介绍如何使用Java进行文件导出,并确保与Office 2003和Office 2007的兼容性。 首先,我们要...

    java准确读取word页码

    在Java编程环境中,读取Word文档的页码是一项常见的任务,尤其在处理大量文档数据时。这个场景下,我们通常会使用Apache POI库,这是一个强大的API,专门用于处理Microsoft Office格式的文件,包括Word(.doc和.docx...

    Java编程生成word文件设置字体段落格式

    Java对PageOffice编程,从空白的word模板动态生成word文件,填充文本内容、图片,同时设置文本的字体、段落、格式。 PageOffice是标准Java组件,标准JSP Tag标签方式引用,完美支持Eclipse、MyEclipse等开发工具。 ...

    java 前台数据和echarts图表导出为word文件的jar

    Apache POI是Java社区中广泛采用的API,它允许程序员创建、修改和显示Microsoft Office格式的文件,包括Word(.docx)、Excel(.xlsx)和PowerPoint(.pptx)。在描述中提到的三个jar包,即stax-api-1.0.1.jar、...

    Word文档上传并解析内容

    在这里,Default2.aspx.cs可能包含了文件上传的处理函数以及解析Word内容的代码,然后将结果传递给Default2.aspx进行显示。在Default2.aspx中,我们需要使用适当的HTML和CSS布局来呈现解析出的Word内容,确保用户...

    java生成word文件并下载.pdf

    这个代码段是关于在Java环境中使用FreeMarker模板引擎生成Word文件并提供下载服务的实现。以下是详细的知识点解析: 1. **FreeMarker**:FreeMarker是一个基于模板的Java库,用于生成文本输出(如HTML、XML、Word...

Global site tag (gtag.js) - Google Analytics