我想读取一个.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();
}
}}
通过执行上面的代码(对于某些文件),我得到了一些有线消息,
如下所示https://i.stack.imgur.com/RwNWM.jpg
有人请帮我解决这个问题....
阅读.docx我遇到了类似使用 apacheio 的 XWPFDocument 的东西......这是怎麽?
首先,您应该考虑您的问题:不同的文件类型作为文件是什么样子的,它们的结构是什么,您想要打印的内容是什么,"打印"到底是什么意思?您正在做的是读取文件,将它们视为文本并将它们打印到 STDOUT。在您的情况下,"打印"是这个意思吗?我将"打印"解释为能够将内容发送到打印机并获得一些纸张。
另一个提示:Doc 和 Docx 是二进制文件,其中包含"某处"的"可打印"文本。您不能只是读取文件并对数据执行某些操作。您需要知道这些文件格式的外观,内容是否等。Java不能开箱即用,你需要额外的库来解析这些文件格式并用它们做一些事情。
有许多关于 docx 等格式的教程和问题:
如何使用poi jar读取java api中的docx文件内容
阅读.docx我遇到了类似使用 apacheio 的 XWPFDocument 的东西......这是怎麽?
你是说阿帕奇POI。要了解更多信息,请查看网站。简而言之,Apache POI和docx4j(我注意到你已经标记了)都是Java库,旨在读取,操作和写入Microsoft Office文件。
"文档"文件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