发布于 5年前

Java使用POI读取Word文档时如果文档内容为空时出现异常

异常如下:

org.apache.poi.EmptyFileException: The supplied file was empty (zero bytes long)
at org.apache.poi.util.IOUtils.peekFirstNBytes(IOUtils.java:74)
at org.apache.poi.util.IOUtils.peekFirst8Bytes(IOUtils.java:57)
at org.apache.poi.poifs.filesystem.FileMagic.valueOf(FileMagic.java:135)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.verifyZipHeader(ZipHelper.java:175)
at org.apache.poi.openxml4j.opc.internal.ZipHelper.openZipStream(ZipHelper.java:209)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:98)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:116)

不知道如何避免这个异常, 怎样判断word文档内容是否为空呢?或者怎样获取到文档的大小呢?

最佳答案

判断文档内容是否为空:

File file = new File("test.docx");
if(file.length() == 0) {
System.out.println("文件为空!");
}

另外读取Word文档内容用Free Spire.Doc for Java也是个不错的方法, 两句代码

Document document = new Document("input.docx"); 
String text = document.getText();
©2020 edoou.com   京ICP备16001874号-3