相关疑难解决方法(0)

FileInputStream vs ClassPathResource vs getResourceAsStream和文件完整性

我有一个奇怪的问题:

在src/main/resources中我有一个"template.xlsx"文件.

如果我这样做:

InputStream is = new ClassPathResource("template.xlsx").getInputStream();
Run Code Online (Sandbox Code Playgroud)

或这个 :

InputStream is = ClassLoader.getSystemResourceAsStream("template.xlsx");
Run Code Online (Sandbox Code Playgroud)

或这个 :

InputStream is = getClass().getResourceAsStream("/template.xlsx");
Run Code Online (Sandbox Code Playgroud)

当我尝试创建工作簿时:

Workbook wb = new XSSFWorkbook(is);
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

java.util.zip.ZipException: invalid block type
Run Code Online (Sandbox Code Playgroud)

但是,当我得到这样的文件时:

InputStream is = new FileInputStream("C:/.../src/main/resources/template.xlsx");
Run Code Online (Sandbox Code Playgroud)

有用 !

怎么了 ?我无法将完整路径硬编码到文件中.

有人可以帮我弄这个吗 ?

谢谢

java stream apache-poi

11
推荐指数
1
解决办法
7565
查看次数

标签 统计

apache-poi ×1

java ×1

stream ×1