jjzjj

java - ZipFile 关闭后 ZipEntry 是否仍然存在?

我目前在我的库中有一个似是而非的资源泄漏,因为我打开了一个ZipFile,因此某个ZipEntry的返回InputStream没有关闭。但是,关闭返回的InputStream不会关闭ZipFile的其余部分,所以我一直保持打开状态。有没有办法安全地关闭ZipFile并保留InputStream以供返回? 最佳答案 这是InputStreamfromZipFile的实现:/**Innerclassimplementingtheinputstreamusedtoreada*(possiblycompressed)zipfileentry

java - java.util.zip.ZipFile.close() 什么时候抛出 IOException?

什么情况下会java.util.zip.ZipFile.close()抛出IOException?它的方法签名表明它可以被抛出,但从源代码来看,似乎没有任何地方可能发生这种情况,除非它是在native代码中。在捕获该异常时可以采取什么纠正措施(如果有)? 最佳答案 来自APIdocsonZipFile.close():ClosingthisZIPfilewillclosealloftheinputstreamspreviouslyreturnedbyinvocationsofthegetInputStreammethod.和Inpu

java - 使用 Commons IO 将目录压缩成一个 zipfile

我是Java编程的初学者,目前正在编写一个必须能够压缩和解压缩.zip文件的应用程序。我可以使用以下代码使用内置的Javazip功能和ApacheCommonsIO库解压缩Java中的zip文件:publicstaticvoiddecompressZipfile(Stringfile,StringoutputDir)throwsIOException{if(!newFile(outputDir).exists()){newFile(outputDir).mkdirs();}ZipFilezipFile=newZipFile(file);Enumerationentries=zipFil

java - 临时用 zip4j 解压文件。 (提取用于读取但在缓存文件中不可见)

我正在使用zip4j以及打包和提取工作,但我很好奇如何只提取文件而不将文件放入缓存中。这是我在另一个线程上找到的一些代码:publicstaticvoidmain(){Stringsource="C:\\Users\\gamecaching\\Cache.zip";Stringdestination="C:\\Users\\gamecaching\\";Stringpassword="mypassword";try{ZipFilezipFile=newZipFile(source);if(zipFile.isEncrypted()){zipFile.setPassword(passwo

java - ZipFile 抛出错误,但 ZipInputStream 能够解压缩存档

我遇到了java.util.zip.*的奇怪行为我有一个zip文件,解压后会发生以下问题ZipFilezipfile=newZipFile(file,ZipFile.OPEN_READ);这是准确的错误信息java.util.zip.ZipException:errorinopeningzipfileatjava.util.zip.ZipFile.open(NativeMethod)atjava.util.zip.ZipFile.(ZipFile.java:127)atjava.util.zip.ZipFile.(ZipFile.java:143)atcom.basware.Extra

java - 非常大的 zip 文件 (> 50GB) --> ZipException : invalid CEN header

我正在尝试用JAVA打开ZIP文件。下面的代码工作正常,除了一些大文件,在这种情况下我得到以下异常:Exceptioninthread"main"java.util.zip.ZipException:invalidCENheader(badsignature)atjava.util.zip.ZipFile.open(NativeMethod)atjava.util.zip.ZipFile.(ZipFile.java:114)atjava.util.zip.ZipFile.(ZipFile.java:75)是否存在已知错误?会不会是因为JAVA不支持更高的压缩级别?请注意,我不能使用Wi

java//解压报错:MALFORMED

我想递归解压缩一些存档.zip。我使用java.util.zip,但无法使用其他库。我的代码:publicstaticvoidunzip(Stringfile){try{FilefSourceZip=newFile(file);StringzipPath=file.substring(0,file.length()-4);Filetemp=newFile(zipPath);temp.mkdir();System.out.println(zipPath+"created");ZipFilezipFile=newZipFile(fSourceZip);Enumeratione=zipFil

java - 如何使用 Java 10 检测 zip-bomb

ApachePOI会定期打开zip文件,因为MicrosoftExcel/Word/...文件是较新格式的zip文件。为了防止某些类型的拒绝服务攻击,它在打开Zip文件时具有不读取扩展很多的文件的功能,因此可以通过提供一个小的恶意文件来淹没主内存,当解压缩到内存中。ApachePOI将此称为zip-bomb-protection。在Java9之前,它可以通过反射使用一些变通方法将计数输入流注入(inject)ZipFile/ZipEntry以检测扩展数据中的爆炸,并通过这种方式防止压缩炸弹。但是在Java10中,这不再是可能的,因为ZipFile的实现以防止这种情况发生的方式发生了变化

java - 我可以在 vaadin 中直接流式传输 ZipFile 吗?

我的应用程序的当前架构不允许我在服务器端存储文件并创建指向该存储文件的链接。那么是否有任何其他选项(或代码片段)可以直接流式传输ZipFile并将其存储在客户端?编辑:我想我的问题被误解了。我收到压缩文件并将其存储在客户端的答案。我已经做到了。以下是示例用例的主要关注点:场景:用户有大约5000条记录(每条大约1MB)并且用户想要下载以ZIP格式压缩的每5000条记录的子记录(CSV格式)。所有CSV文件都是即时生成的。方法:由于ZIP文件的大小可达5GB,因此我采用了将文件内容直接流式传输到客户端创建的ZIP文件的方法。为此,我使用了PipeInputStream和PipeOutpu

Java 9 Zip End Header Not Found 异常

为Google员工编辑:原来这是由于使用了过时的Java9测试版造成的。我正在尝试使用java从此URL批量下载zip文件-SRTMfiles它需要用户名/密码才能下载,我正在使用以下java代码,它给了我以下异常java.util.zip.ZipException:zipENDheadernotfoundatjava.util.zip.ZipFile$Source.zerror(java.base@9-internal/ZipFile.java:1210)atjava.util.zip.ZipFile$Source.findEND(java.base@9-internal/ZipFi