读取.doc和.docx文件的内容时出错

时间:2013-10-26 14:13:09

标签: java apache-poi docx docx4j

我想读取.txt,.doc和.docx文件并打印这些文件的内容。当我运行下面的代码时,会读取一些.doc和.txt文件但很多文件无法读取。< / p>

import java.io.File;
import javax.swing.*;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;

public class FindYourDocx 
{

    public static void main(String[] args) 
    {
String text = "";
    int read, N = 1024 * 1024;
    char[] buffer = new char[N];

    try { 
        JFileChooser openFile=new JFileChooser();
             openFile.setCurrentDirectory(new File("."));
             openFile.showOpenDialog(null);
            File f1=openFile.getSelectedFile();
           String file1=f1.toString();
           File f =new File(file1);
           JOptionPane.showMessageDialog(null,f);
        FileReader fr = new FileReader(f);
        BufferedReader br = new BufferedReader(fr);

        while(true) {
            read = br.read(buffer, 0, N);
            text += new String(buffer, 0, read);
        System.out.println("Follows"+text+" "); 
                    if(read < N) {
                break;
            }
       System.out.println("Follows"+text+" "); }
    } catch(Exception ex) {
        ex.printStackTrace();
    }

    }}

通过执行上面的代码(对于某些文件),我得到了一些有线消息,如下所示 http://i.stack.imgur.com/RwNWM.jpg

有人请帮我解决这个问题....

阅读.docx我发现了类似XWPFDocument的东西使用apacheio ....这是什么?

2 个答案:

答案 0 :(得分:0)

首先,您应该考虑一下您的问题:不同的文件类型作为文件是什么样的,它们的结构是什么,您想要打印的内容是什么以及“打印”的含义是什么?你正在做的是读取文件,将它们视为文本并将它们打印到STDOUT。在您的情况下,“打印”是否意味着这一点?我将“打印”解释为能够将内容发送到打印机并获得一些纸张。

另一个提示:Doc和Docx是二进制文件,其中包含“可打印”文本“某处”。您不能只读取文件并对数据执行某些操作。你需要知道这些文件格式是什么样的,内容是什么等等.Java无法开箱即用,你需要额外的库来解析这些文件格式并对它们做些什么。

围绕docx这样的格式有许多教程和问题:

How to read docx file content in java api using poi jar

答案 1 :(得分:0)

  

阅读.docx我发现了类似XWPFDocument的东西使用apacheio ....这是什么?

你的意思是Apache POI。要了解更多信息,请查看网站。简而言之,Apache POI和docx4j(我注意到你已标记)都是Java库,旨在读取,操作和编写Microsoft Office文件。

'doc'文件是Microsoft专有的二进制文件。如果您尝试读取它们并仅使用Java IO API显示它们,您将看到的只是二进制数据的表示。它对你没用。您需要使用专门用于加载和遍历Word文件的API,这是Apache POI或docx4j的用武之地。

'docx'文件是一种较新的基于XML的Microsoft Office格式。 docx文件本质上是一个压缩文件夹,其中包含组成Word文件的各种资产。

正如我所说,为了正确读取Word文件,您需要使用其中一个库。 Apache和docx4j网站都包含大量示例代码,可帮助您开始打开和遍历Word文档(请注意,POI可以使用较旧的.doc格式,而docx4j仅适用于.docx文件)。

http://www.docx4java.org

http://poi.apache.org