问题描述
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文件的容器。所以,先解压再读,但是如果加密过的就不行了。