-1

我想读取 .txt、.doc 和 .docx 文件并打印这些文件的内容。当我运行以下代码时,会读取一些 .doc 和 .txt 文件,但许多文件无法读取。

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 .... 这是什么?

4

2 回答 2

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

于 2013-10-27T12:24:22.980 回答
0

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

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

有很多关于 docx 等格式的教程和问题:

如何使用 poi jar 在 java api 中读取 docx 文件内容

于 2013-10-26T14:19:13.847 回答