我试图从文件列表中找到一个特定的单词,这些文件可以是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Û
答案 0 :(得分:0)
docx不是具有不同编码的文本格式,它是完全不同的非文本文件格式。基本上,它是各种文件和文件夹的zip存档(一些xml文件中的主要数据)。您不能只将其作为文本文件读取,您需要使用Apache POI等库或某种文件转换器来从中获取文本。
答案 1 :(得分:0)
这与不同的文本编码无关。
docx 是microsoft的一种特殊格式,它包含有关文档的各种信息(打包为zip存档)。
您可以使用java ZipFile读取该文件并获取条目: word / document.xml document.xml包含word文档的文本。您可以通过此文件阅读并输出特定行。
伪代码:
ZipFile file = new ZipFile("doc.docx");
InputStream input = file.getInputStream(file.getEntry("word/document.xml"));
输入现在包含文本信息。
编辑: document.xml包含文档的文本,但是有许多xml标记需要过滤掉