我试图从文件列表中找到一个特定的单词,这些文件可以是ASCII,Unicode或其他一些格式。到目前为止,我只能处理ASCII文件。有没有办法对其他文件编码格式做同样的操作。
Scanner s = null;
try {
s = new Scanner(new BufferedReader(new FileReader("C:\\New Microsoft Word Document.docx")));
while (s.hasNext()) {
// final String lineFromFile = s.nextLine();
// if(lineFromFile.contains("DE")){
System.out.println(s.next());
// break;
// }
}
} finally {
if (s != null) {
s.close();
}
}我得到了以下结果
Q[µM¡°‰”Ø÷Þ3{:½¹®’)xTÖä¬?µXFÚB™QÎÞ‡Ïé=K0SˆÊÈÙ?õº×W?áÂ&¤6˜³qî?s”cÐ3ëÀÐJi½?^ýˆ;!¿Äøm«uÇ¥5LHCô`ÝΔbR…¤?§Ï+gF,y\í‹Q9S:êãw~Pá¡Â=‰p®RRª?OM±Ç•®™2R.÷àX9¼!ð#
qe—i;`{¥fzU@2>¼Mä|f}Á
+'šªÎNÛ发布于 2013-12-09 22:46:13
docx不是使用不同编码的文本格式,它是一种完全不同的非文本文件格式。基本上,它是各种文件和文件夹的zip存档(主要数据在一些xml文件中)。您不能仅仅将其作为文本文件读取,还需要使用Apache POI等库或某种文件转换器从其中获取文本。
发布于 2013-12-09 23:15:03
这与不同的文本编码无关。
是微软的一种特殊格式,它包含有关文档的各种信息(打包为zip存档)。
您可以使用word/document.xml ZipFile读取该文件并获取条目: java document.xml包含word文档的文本。然后,您可以阅读此文件并输出特定的行。
伪码:
ZipFile file = new ZipFile("doc.docx");
InputStream input = file.getInputStream(file.getEntry("word/document.xml"));输入现在包含文本信息。
xml :xml包含文档的文本,但是有许多标记需要过滤掉
https://stackoverflow.com/questions/20472158
复制相似问题