4

我正在尝试在 java 中读取一个文件,以下是代码:

public void readFile(String fileName){
        try {
        BufferedReader reader= new BufferedReader(new FileReader(fileName)); 
        String line=null;
        while((line=reader.readLine()) != null ){
            System.out.println(line);
        }
        }catch (Exception ex){}
            }

如果是 txt 文件,它工作正常。但是,对于 docx 文件,它会打印奇怪的字符。我如何在 Java 中读取 .docx 文件。

4

4 回答 4

13
import java.io.File;
import java.io.FileInputStream;
import java.util.List;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
    public void readDocxFile() {
            try {
                File file = new File("C:/NetBeans Output/documentx.docx");
                FileInputStream fis = new FileInputStream(file.getAbsolutePath());

                XWPFDocument document = new XWPFDocument(fis);

                List<XWPFParagraph> paragraphs = document.getParagraphs();


                for (XWPFParagraph para : paragraphs) {
                    System.out.println(para.getText());
                }
                fis.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
于 2015-12-31T08:41:21.147 回答
7

.docx文件在内部组织为压缩的XML文件,而.doc二进制文件格式。所以你不能直接阅读任何一个。看看docx4jApache POI

如果您尝试创建或操作 .docx 文件,请尝试docx4j 这是源

或者去 apachePOI

于 2013-05-22T04:55:50.887 回答
2

您无法直接读取 docx 文件或 doc 文件。您需要有一个 API 来读取 word 文件。使用 Apache POI http://poi.apache.org/。如果您有任何疑问,请参考 stackoverflow.com 上的此线程 How read Doc or Docx file in java?

于 2013-05-22T03:24:26.947 回答
1

你必须有以下 6 个罐子:

  1. xmlbeans-2.3.0.jar
  2. dom4j-1.6.1.jar
  3. poi-ooxml-3.8-20120326.jar
  4. poi-ooxml-schemas-3.8-20120326.jar
  5. poi-scratchpad-3.2-FINAL.jar
  6. poi-3.5-FINAL.jar

代码:

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
 
public class test {
 public static void readDocxFile(String fileName) {
try {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file.getAbsolutePath());
XWPFDocument document = new XWPFDocument(fis);
List<XWPFParagraph> paragraphs = document.getParagraphs();

for(int i=0;i<paragraphs.size();i++){
    System.out.println(paragraphs.get(i).getParagraphText());
}
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
 readDocxFile("C:\\Users\\sp0c43734\\Desktop\\SwatiPisal.docx");
 }
} 
于 2014-11-28T13:59:58.137 回答