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调用PageOffice在线编辑word文件的时候,获取word文档的条目化内容。 PageOffice V4.0 企业版试用序列号:Q37LN-W8NI-KFSQ-LEY3Y 部署步骤: 1. 拷贝simpledemo8文件夹到Tomcat的webapps目录下 2. 访问...
在IT行业中,转换文件格式是一项常见的任务,尤其是在处理文档时。本示例主要涉及的是将HTML文件转换为Word文档,具体使用的是Java库——docx4j。这个库提供了强大的功能,可以方便地进行XML、XSL-FO到OpenXML(包括...
在IT行业中,生成自定义内容的Word文件是一个常见的需求,特别是在自动化报告、文档生成或个性化信函等场景。Java提供了一些强大的库来实现这个功能,其中就包括利用Word模板生成自定义内容。在这个案例中,我们将...
读取word文件的内容,并将内容返回为String类型!
本文将详细介绍如何使用Java进行XML、Word以及TXT文件的读写操作,并确保在读写过程中不会出现乱码现象。 #### 二、理解文件编码 在深入探讨具体的解决方案之前,我们先来了解一下文件编码的基本概念。文件编码是指...
本项目关注的是如何使用Java来实现读取Microsoft Word文件,并将其中的数据上传到数据库,以此提升数据录入的效率。这一过程涉及到多个技术点,包括文件I/O、Word文档解析、数据库操作以及可能的数据转换。 首先,...
工程作用:读取本地TXT文件并显示在JSP页面上 运行环境:Tomcat, JAVA EE6.0,搜狗高速浏览器 程序作者:Roy Liu 直接添加到MyEclipse中即可运行。 源程序内有代码注释。 已知BUG: 1、未输入文件地址时,会报错;...
java读取txt文件,可以以文件路径构造这个流,:FileInputStream fin = new FileInputStream("d:/test.txt"); 然后使用这个流直接读取到文件,再使用reader构造BufferedReader,按行读取一整行的文本,作为字符串返回...
"Java 通过 URL 在线预览 Word、Excel、PPT、PDF、TXT 文档中的内容" Java 语言可以通过 URL 在线预览 Word、Excel、PPT、PDF、TXT 文档中的内容。下面将详细介绍如何实现这一功能。 Word 文档预览 在 servlet ...
2. **读取TXT文件**:使用Java的`BufferedReader`类读取TXT文件内容,并将其存储到一个字符串变量中。 ```java String content = ""; try (BufferedReader reader = new BufferedReader(new FileReader("input....
Java在线编辑保存Word文件是一项常见的需求,特别是在Web应用中,用户可能需要在浏览器环境中直接对文档进行编辑操作。PageOffice是一款强大的Java组件,它能够帮助开发者实现这一功能,特别是其V4.4版本,提供了跨...
本篇文章将详细探讨如何使用Java将TXT文本文件转换为PDF,并解决中文字符显示问题。 首先,我们需要理解TXT和PDF这两种文件格式。TXT文件是最基本的纯文本格式,不包含任何格式化信息,而PDF(Portable Document ...
在IT行业中,尤其是在文档处理领域,Java是一种广泛使用的编程语言,可以实现各种复杂的功能,如动态生成模板Word文件,将其转换为PDF,并进行预览打印。以下是对标题、描述和标签所涉及知识点的详细说明: 1. **...
在Java开发中,实现Word文档的在线预览是一项常见的需求,尤其在企业级应用中,例如文档管理系统或者协同办公平台。这项功能可以让用户无需下载原始文件就能查看文档内容,提高工作效率并减少服务器存储压力。本资源...
JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法(poi) JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法是使用 ...使用 Apache POI 库可以轻松地读取 WORD_EXCEL_POWERPOINT_PDF 文件,并提取其中的文本内容。
在Java编程环境中,合并多个Word文档是一个常见的任务,特别是在处理大量文档数据时。本文将详细介绍两种不同的方法来实现这一功能,结合给定的资源"java多个word文件合并.zip",我们将探讨如何使用JACOB库和Apache ...
在Java编程环境中,将Word文档转换为HTML是一种常见的需求,特别是在数据处理、文档共享或网页展示等场景。本文将详细讲解如何使用Java实现这一功能,包括必要的库引用、代码示例以及转换过程。 首先,我们需要引入...
在Java编程环境中,读取和处理Word文档通常涉及到使用第三方库,因为Java标准库并不直接支持Word文件的操作。本主题将深入探讨如何利用给定的`itextpdf-5.5.9.jar`和`jacob.jar`这两个库来实现Java读取Word文档页数...
1. **解压 .docx 文件**:使用 `java.util.ZipFile` 类来打开并读取 .docx 文件,获取 `word/document.xml` 的 `ZipEntry`。 2. **解析 XML**:使用 `javax.xml.parsers.DocumentBuilderFactory` 和 `...
在Java编程环境中,读取Word文档的页码是一项常见的任务,尤其在处理大量文档数据时。这个场景下,我们通常会使用Apache POI库,这是一个强大的API,专门用于处理Microsoft Office格式的文件,包括Word(.doc和.docx...