【Java】操作doc文件
读取txt文件
在Java里要对文件进行操作,需要用到IO流。
public static void main(String args[]){File f = new File("test.txt");try {
// InputStream 处理的是字节流,用read()的话每次读取的是一个byteInputStream in = new FileInputStream(f);
// InputStreamReader 处理的是字符流,用read()的话每次读取一个字符InputStreamReader reader = new InputStreamReader(in,"gbk");
// BufferReader 处理的是字符流,能够一行一行的读取文件BufferedReader bufReader = new BufferedReader(reader);int i = 1;String line ="";
// readLine()每用一次读取一行while((line = bufReader.readLine()) != null){System.out.println("第"+ i + "行:"+line);++i;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
输出:
操作doc文件
读取doc文件如果也用上面的方法的话,中文就会出现乱码:
要用Java Apache POI才能对doc文件进行操作,使用POI从doc文件读取数据时主要有两种方式:通过WordExtractor读和通过HWPFDocument读。首先先在Maven中引入poi-scratchpad的jar包(如果是docx文件则引入poi-ooxml的jar包 )
使用WordExtractor
WordExtractor的功能相比HWPFDocument的功能是要少的,在使用WordExtractor读文件时我们只能读到文件的文本内容和基于文档的一些属性,至于文档内容的属性等是无法读到的,并且WordExtractor无法修改doc文件。使用WordExtractor读取文件内容:
public static void main(String args[]){File f = new File("test.doc");try {InputStream in = new FileInputStream(f);WordExtractor ex = new WordExtractor(in);System.out.println(ex.getText());} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
使用HWPFDocument
因为我主要是为了修改doc文件的内容,所以用HWPFDocument。将文档中的中文字全部去除:
public static void main(String args[]){File f = new File("test.doc");try {InputStream in = new FileInputStream(f);HWPFDocument ex = new HWPFDocument(in);Range range = ex.getRange();/*** 匹配中文字符 [\\u4e00-\\u9fa5]* 中文标点符号,、; \\uff1b|\\uff0c|\\u3001* 括号内容(包括括号) (\\(.*\\))*/ Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]|\\uff1b|\\uff0c|\\u3001|(\\(.*\\))",Pattern.CASE_INSENSITIVE);Matcher matcher = pattern.matcher(range.text());OutputStream os = new FileOutputStream(f);// 找到中文字符并替换为“” 即删除while (matcher.find( )) {range.replaceText(matcher.group(),"");}// 将修改后的内容重新写入文档中ex.write(os);os.close();in.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}
修改前:
修改后:
做这个功能是为了背单词,而一个文档5500个单词,308页内容,一个一个删除中文太麻烦了,所以想到了用代码实现
参考资料:http://www.jb51.net/article/101910.htm
【Java】操作doc文件相关推荐
- Java操作word文件的工具选择
Java操作word文件的工具选择 使用Java语言,创建doc.docx.excel.pdf等文档,并对文档进行一系列操作. Spire.Doc for Java https://blog.csdn ...
- JAVA操作xml文件
参考:java操作xml方法,总有适合你的 XML技术在Java开发中的应用 1.简介 xml: extensible Markup Language 1.1使用场景: 不同的系统之间交互时使用xml ...
- JAVA操作属性文件,可进行读 写 更改
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! JAVA ...
- java操作properties文件简单学习
java操作properties文件的工具类简单封装: 注意:由于本地和环境和linux服务的路径有区别,或者jetty,resin,tomcat部署后,文件的路径也是有区别的.比如我们在linux上 ...
- java 操作Zip文件(压缩、解压、加密)
java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...
- java操作excel文件基础架构实现,支持2007以上版本
转载请注明出处:http://blog.csdn.net/xiaojimanman/article/details/22800915 java操作office文件现在主流的jar包有jxl和POI,由 ...
- 高级知识点:excel4j实现java操作excel文件的读写
介绍 java操作excel文件最经典的是POI,但是其api 较多,代码量巨大,反复重复 excel4j ap则简洁太多,利用pojo建模,利用注解进行标识@ExcelField(title = & ...
- Java操作XML文件及转义字符
XML转义字符: eg: 实体必须以符号"&"开头,以符号";"结尾. 转载1: 目录 一.使用DOM4j进行XML的DOM解析 1.1.使用DOM4j ...
- JAVA操作properties文件
操作properties文件的java方法 Properties prop = new Properties(); InputStream in = getClass().getResourceAsS ...
最新文章
- CSDN蒋涛提出技术社区三倍速定律,称下一个20年全球开发者数量将过亿
- JAVA常见算法题(三十)
- tor screenrec屏幕录制+_ScreenFlow for mac(屏幕录制软件) v8.2.4中文版
- BZOJ 2733 线段树的合并 并查集
- Centos 安装mongodb
- c遗传算法的终止条件一般_Matlab2 :Matlab遗传算法(GA)优4~-r-具箱是基于基本操作 联合开发网 - pudn.com...
- 动态创建表格(各种管理系统常见)
- VS 2017 + EF6 + MySQL5.7 建立实体模型闪退问题
- 使用iText处理pdf文件的入门级教程
- 简易PROTUES的定时器仿真
- Linux网络基础知识
- epub.js制作电子书阅读网站
- Python while语句2021-08-27
- qq农场外挂编写分析-java
- Node.js运行app.js时候报错933
- 写一个程序来确定到底谁是凶手
- Python数据挖掘—电力窃漏电用户自动识别
- PREP	语法笔记 2
- CA周记 - 在 Azure ML 上用 .NET 跑机器学习
- php如何实现余额充值,请问应用中实现绑定银行卡并进行消费、充值、提现一般是怎么搞的?...
热门文章
- R语言基础题及答案(三)——R语言与统计分析第三章课后习题(汤银才)
- #if #else 用法
- 字节跳动+京东+360+网易面试题整理,Java岗
- Cinema 4D 中的 Redshift 概述
- 基于单片机控制的智能窗帘控制系统的设计与实现
- 【智能家居】设计一种语音控制识别规则模型---结合思必驰DUI平台
- linux 交叉编译工具中没有libc和liblog库文件,NDK无法找到动态链接库;动态链接库找不到依赖的gcc库;JNI中无法找到要注册的类;and so on...
- MATLAB学习笔记:数列求和与级数
- zabbix监控服务器邮箱报警
- 实现PLC(S7-1200)的远程操控与调试