我试图阅读(使用apache poi).xlsx文件,它不在文件系统中但在classpath中.我正在使用maven – 所以它在资源文件夹中.
我的代码是 –
InputStream resourceAsStream = MyReader.class.getClassLoader().getResourceAsStream("test.xlsx");
Workbook wb = new XSSFWorkbook(resourceAsStream);
我得到了这个例外.
Caused by: java.lang.IllegalArgumentException: MALFORMED
at java.util.zip.ZipCoder.toString(ZipCoder.java:58) ~[?:1.7.0_51]
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:297) ~[?:1.7.0_51]
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:121) ~[?:1.7.0_51]
at org.apache.poi.openxml4j.util.ZipInputStreamZipEntrySource.(ZipInputStreamZipEntrySource.java:51) ~[poi
a3]
at org.apache.poi.openxml4j.opc.ZipPackage.(ZipPackage.java:88) ~[poi-ooxml-3.11-beta3.jar:3.11-beta3]
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:272) ~[poi-ooxml-3.11-beta3.jar:3.11-beta3]
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:37) ~[poi-ooxml-3.11-beta3.jar:3.11-beta3]
当我从文件系统中读取同一文件时,一切都很好.
我的代码中是否有错误或者我错过了什么?
UPDATE1:这是在Web应用程序中,因此代码部署在tomcat 7中.
UPDATE2:当我以这种方式读取同一文件时 – 它有效.
File file = new File("C:\\Users\\.....\\test.xlsx");
FileInputStream fileInputStream = new FileInputStream(file);
Workbook wb = new XSSFWorkbook(fileInputStream);
谢谢