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

时间:2016-02-27 07:43:16

标签: java filenotfoundexception docx4j

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

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

java.io.FileNotFoundException:G:\ WorkSpaces \ 111.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;
}

2 个答案:

答案 0 :(得分:0)

似乎是G:是网络磁盘。在Windows中,JVM在System用户下运行。该用户无法看到网络磁盘。你可以尝试:

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

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

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

答案 1 :(得分:0)

感谢Ken Bekov的回答。过了一段时间,我想出了解决方案,并按照以下方式在输出窗口上显示文档的内容:

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;
}