gpt4 book ai didi

java - FileInputStream vs ClassPathResource vs getResourceAsStream 和文件完整性

转载 作者:搜寻专家 更新时间:2023-10-30 21:46:12 25 4
gpt4 key购买 nike

我有一个奇怪的问题:

在 src/main/resources 我有一个“template.xlsx”文件。

如果我这样做:

InputStream is = new ClassPathResource("template.xlsx").getInputStream();

或者这个:

InputStream is = ClassLoader.getSystemResourceAsStream("template.xlsx");

或者这个:

InputStream is = getClass().getResourceAsStream("/template.xlsx");

当我尝试创建工作簿时:

Workbook wb = new XSSFWorkbook(is);

我收到这个错误:

java.util.zip.ZipException: invalid block type

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

InputStream is = new FileInputStream("C:/.../src/main/resources/template.xlsx");

有效!

怎么了?我无法对文件的完整路径进行硬编码。

有人可以帮我解决这个问题吗?

谢谢

最佳答案

我遇到了同样的问题,你可能遇到了 maven 过滤的问题。

此代码从源加载文件,未过滤

InputStream is = new FileInputStream("C:/.../src/main/resources/template.xlsx");

这段代码在maven过滤内容后从目标目录加载文件

InputStream is = getClass().getResourceAsStream("/template.xlsx");

您不应像本页底部所述那样过滤 excel 之类的二进制文件并使用两个互斥的资源集 maven resources plugin

关于java - FileInputStream vs ClassPathResource vs getResourceAsStream 和文件完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9840631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com