为什么java 用IO流读docx文件里的内容打印在控制台是乱码

问题描述

importjava.io.BufferedReader;importjava.io.File;importjava.io.FileNotFoundException;importjava.io.FileReader;importjava.io.IOException;importjava.io.Reader;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassLinx{publicstaticvoidinPut(Filefile,Stringstr)throwsIOException{Readerrd=newFileReader(file);BufferedReaderreader=newBufferedReader(newBufferedReader(rd));byte[]buf=newbyte[1024];inti=1;Stringsr="";Patternp=Pattern.compile(str);Matcherm=null;while((sr=reader.readLine())!=null){m=p.matcher(sr);while(m.find()){System.out.println();System.out.println("第"+i+"处"+file.getPath());System.out.println("----------------------------------------------------------------------------");i++;}}reader.close();rd.close();}publicstaticvoidisDirectory(Filefile,Stringstr)throwsFileNotFoundException,IOException{if(file.isDirectory()){String[]gf=file.list();for(inti=0;i<gf.length;i++){isDirectory(newFile(file,gf[i]),str);//System.out.println(newFile(file,gf[i]));//System.out.println(file.getPath()+"\"+gf[i]);}}else{inPut(newFile(file.getPath()),str);}}publicstaticvoidmain(String[]args)throwsFileNotFoundException,IOException{isDirectory(newFile("E:\我的项目\学生管理"),"click");}}其它文件不会出现乱码?*.docx就会出现看不懂的乱码?有没有高手解决一下,小弟先谢过了!

解决方案

解决方案二:
io读取确实是乱码。你用poi解析docx文件的对象吧
解决方案三:
docx文件是加密过的文件,所以读出来是乱码……
解决方案四:
用poi解析docx文件
解决方案五:
你换个流,别用字符流,用字节流
解决方案六:
office文件还是用poi去解析吧~jdk自带的类解析文本文件还是不错的,但是office文件有点乏力
解决方案七:
docx是MicrosoftOffice2007之后版本使用的,用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母x(即.docx取代.doc、.xlsx取代.xls等等)。docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。事实上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。所以,先解压再读,但是如果加密过的就不行了。

时间: 2024-11-03 20:12:48

为什么java 用IO流读docx文件里的内容打印在控制台是乱码的相关文章

流 ile-java 怎么把文件名 和 文件里的内容都写在另一个文件里

问题描述 java 怎么把文件名 和 文件里的内容都写在另一个文件里 java中 怎么把文件名 和 文件里的内容都写在另一个文件里 最好 另一个文件是这样的: 被写入的文件名称 空一行(或者其他分隔符) 然后在写该文件的内容 解决方案 没看明白,如果只是往另外文件写东西,那些到txt文件中,随便你怎么写都行 解决方案二: 自己用IO流写啊,这个太基础了吧 解决方案三: 自己去看看inputstream和outputstream. 解决方案四: 自己用IO流写啊 基础的问题 自己看书 比在这问学的

Java基于IO流读取文件的方法_java

本文实例讲述了Java基于IO流读取文件的方法.分享给大家供大家参考,具体如下: public static void readFile(){ String pathString = TEST.class.getResource("/simu").getFile(); try { pathString = URLDecoder.decode(pathString, "utf-8"); } catch (UnsupportedEncodingException e1)

Java中IO流缓冲区的装饰模式的体现

一.Java中IO流缓冲区 import java.io.*; public class BufferedTest {public static void copy1(){InputStream is = null;OutputStream os = null;try{is = new FileInputStream("c:\\xy1.jpg");os = new FileOutputStream("d:\\xy2.jpg");int len = 0;byte[]

java读取带有图片的docx文件

问题描述 java读取带有图片的docx文件 注意是docx不是doc,格式也按照docx的格式读取,项目紧急,请各位大神出山啊 解决方案 如何读取 或 删除 文件夹中的许多文件(图片) java---------------------- 解决方案二: 为什么强制是docx不是doc,难道 doc 文件的操作是正确的? 如果是,则说明是你使用的方法只能兼容旧版本的 Doc 文档格式. 解决方案三: 楼主是借助第三方类库 poi 么 应该不会有版本之间的支持问题吧

用mfc编写一个对话框能实现“打开指定文件,并显示出文件里的内容”这个功能吗?

问题描述 用mfc编写一个对话框能实现"打开指定文件,并显示出文件里的内容"这个功能吗? 用mfc编写一个对话框能实现"打开指定文件,并显示出文件里的内容"这个功能吗? 解决方案 用CFileDialog选择文件,然后CFile等读取文件内容,显示 解决方案二: MFC打开文件对话框功能实现 解决方案三: CFileDialog打开文件对话框,CFile类操作文件,CFile::GetLength()获取文件长度信息.

lines-在mysql 中怎么把文件里的内容写到表中啊!!!!!

问题描述 在mysql 中怎么把文件里的内容写到表中啊!!!!! 文本内容 1,"zhangsan","f" 2,"lisi","m" 3,"zhaoliu","f" 建表 create table mytable( id int(20), name varchar(20), gender char(1) ); 把文本内容写到表中 load data infile 'f:b.txt' r

linux中将一个文件里的内容123改为456的示例

今天我们来介绍linux中将一个文件里的内容123改为456的示例,此方法应用的比较多,特别是针对文件中内容的修改,下面我们来详细的了解两种修改方法: 修改方法1 #sed 's/123/456/g' file.txt > file.txt.new #mv -f file.txt.new file.txt 示例: [root@localhost conf]# sed 's/123/456/g' nginx.conf > nginx.conf.new[root@localhost conf]#

java 标准Io流

问题描述 我想问下,为什么java里面要有标准IO流,有了字节流和字符流,不就可以了吗.为什么啊,我晕. 问题补充:blessed24 写道 解决方案 标准IO指计算机的的输入设备和输出设备,搞这些的吧,为了兼容不同系统,不同物理设备的输入与输出!解决方案二:引用是不是说,只有标准Io实现了跨平台,其他的流都不是跨平台的?标准IO 一般所有的操作系统都是一样的...windows要遵循,linux也一样吧....解决方案三:引用inpublic static final InputStream

Java中IO流,输入输出流概述与总结

总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的子类: 而所有输出流都是抽象类OutputStream(字节输出流)或者Writer(字符输出流)的子类. [首先需要明白的是:流是干什么的???(为了永久性的保存数据)   根据数据流向的不同分为输入流和输出流:   根据处理数据类型的不同分为字符流和字