我正在尝试使用以下方法从当前的JAR中提取一个ZIP文件:
InputStream resource = getClass().getClassLoader().getResourceAsStream(name);
这样做是正确的InputStream
,但是当我尝试使用以下代码将其解压缩时,它给出了错误(我将每个文件存储到中Hashmap<file, filename>
):
public static HashMap<String, String> readZip(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
HashMap<String, String> list = new HashMap<>();
ZipInputStream zipInputStream = new ZipInputStream(inputStream);
ZipEntry entry = zipInputStream.getNextEntry();
while (entry != null) {
if (!entry.isDirectory()) {
StringBuilder stringBuilder = new StringBuilder();
while (IOUtils.read(zipInputStream, buffer) > 0) {
stringBuilder.append(new String(buffer, "UTF-8"));
}
list.put(stringBuilder.toString(), entry.getName());
}
zipInputStream.closeEntry();
entry = zipInputStream.getNextEntry();
}
zipInputStream.closeEntry();
zipInputStream.close();
return list;
}
但是,当我尝试执行此操作时,出现此异常(在上IOUtils.read
)
java.util.zip.ZipException: invalid stored block lengths
at java.util.zip.InflaterInputStream.read(Unknown Source)
at java.util.zip.ZipInputStream.read(Unknown Source)
我做错了吗?我已经对错误进行了大量的搜索,没有发现与我的问题相关的任何信息。
感谢上面的@PaulBGD的回答。它节省了我几个小时来弄清楚系统发生了什么,我在pom.xml
文件中添加了以下新代码片段(在阅读Paul的答案之前,我没有意识到这是根本原因):
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.version</include>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.csv</include>
<include>**/*.txt</include>
<include>**/*.gif</include>
<include>**/*.json</include>
<include>**/*.xlsx</include>
<include>rythm/**</include>
</includes>
</resource>
</resources>
但是我没有直接听保罗的回答,相反,我不认为这些xlsx
文件应该经过资源插件的过滤管道,因此我resource
在pom中添加了另一个文件:
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.xlsx</include>
</includes>
</resource>
它解决了我的问题,而没有将源编码设置从更改UTF-8
为ISO-8859-1
我正在尝试将位于azure datalake中的csv压缩为zip。该操作是使用datricks中的python代码完成的,我在其中创建了一个挂载点以将dbfs与datalake直接关联。 这是我的代码: 但是我收到了这个错误: 有什么办法吗? 提前感谢。
我试图从java调用python文件。但它会抛出以下错误。 我尝试过的代码是: 可能是什么问题?
我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?
主要内容:对称矩阵,上(下)三角矩阵,稀疏矩阵,矩阵压缩存储的 3 种方式数据结构中,提供针对某些特殊矩阵的压缩存储结构。 这里所说的特殊矩阵,主要分为以下两类: 含有大量相同数据元素的矩阵,比如对称矩阵; 含有大量 0 元素的矩阵,比如稀疏矩阵、上(下)三角矩阵; 针对以上两类矩阵,数据结构的压缩存储思想是:矩阵中的相同数据元素(包括元素 0)只存储一个。 对称矩阵 图 1 对称矩阵示意图 图 1 的矩阵中,数据元素沿主对角线对应相等,这类矩阵称为 对称矩阵。 矩阵中
关于师父的解释: 关于奴隶的解释: 贷款-l 查询执行时间长。
我得到无效的zip,当写入文件以下代码: 我将其写入文件的方式是: 我做错了什么?