通过多文件编码进行文本搜索

时间:2013-12-09 13:45:12

标签: java unicode encoding ascii java.util.scanner

我试图从文件列表中找到一个特定的单词,这些文件可以是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Û

2 个答案:

答案 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标记需要过滤掉