我想读取.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 ....这是什么?
答案 0 :(得分:0)
首先,您应该考虑一下您的问题:不同的文件类型作为文件是什么样的,它们的结构是什么,您想要打印的内容是什么以及“打印”的含义是什么?你正在做的是读取文件,将它们视为文本并将它们打印到STDOUT。在您的情况下,“打印”是否意味着这一点?我将“打印”解释为能够将内容发送到打印机并获得一些纸张。
另一个提示:Doc和Docx是二进制文件,其中包含“可打印”文本“某处”。您不能只读取文件并对数据执行某些操作。你需要知道这些文件格式是什么样的,内容是什么等等.Java无法开箱即用,你需要额外的库来解析这些文件格式并对它们做些什么。
围绕docx这样的格式有许多教程和问题:
答案 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文件)。