当我尝试读取现有 docx 文件的内容时,Docx4j 出错

Docx4j gives error when I try to read content of existing docx file

我正在尝试使用 Docx4Java 从我的系统中读取 docx 文件的内容。我已经搜索了足够多的答案,但遗憾的是找不到。

下面是我在尝试实现我的代码时遇到的错误。

java.io.FileNotFoundException: G:\WorkSpaces1.docx (系统找不到指定的文件)

PS : 提供的文件路径没有错误。没有 jar 文件不存在。我问之前都检查过了。

谁能告诉我哪里出错了?

import java.io.*;
import java.util.*;
import org.docx4j.*;

public class doc4jcodegeeks {
   public static void main(String[] args) throws FileNotFoundException {
    try {
        doc4jcodegeeks dcf = new doc4jcodegeeks();
        dcf.getTemplate();
        }
        catch (Exception e) {
        e.printStackTrace();
       }
    }

    private WordprocessingMLPackage getTemplate() throws Docx4JException, FileNotFoundException {
    WordprocessingMLPackage template = WordprocessingMLPackage.load(new FileInputStream(
            new File("G:\WorkSpaces\111.docx")));
    return template;
}

好像是G:是网盘。在 windows 中,JVM 在 System 用户下运行。该用户看不到网络磁盘。你可以试试:

  1. 启动程序时更改用户;

  2. 尝试指定完整的网络路径 (\share\filename.docx)

  3. 最后复制文件到本地磁盘;

感谢 Ken Bekov 的回答。一段时间后,我找到了解决方案并通过以下方式在输出 window 上显示文档内容:

private WordprocessingMLPackage getTemplate() throws Docx4JException, FileNotFoundException {
    WordprocessingMLPackage template = WordprocessingMLPackage.load(new java.io.File("G:\WorkSpaces\111.docx"));
    MainDocumentPart documentPart = template.getMainDocumentPart();

    List<Object> listObj = documentPart.getContent();

     String str = listObj.toString();
     System.out.println(str);

    return template;
}