Tag: zip

从byte (Java)读取时提取ZipFile条目的内容

我有一个zip文件,其内容显示为byte [], 但原始文件对象不可访问 。 我想阅读每个条目的内容。 我能够从字节的ByteArrayInputStream创建一个ZipInputStream,并可以读取条目及其名称。 但是我看不到提取每个条目内容的简单方法。 (我看过Apache Commons,但也看不到那么简单的方法)。 更新 @ Rich的代码似乎解决了这个问题,谢谢 QUERY为什么两个例子的乘数都是* 4(128/512和1024 * 4)?

在Java中解压缩到TreeMap中

我的问题相对简单。 有没有人知道一个能够将压缩文件结构解压缩到Java的TreeMap(或类似的可迭代结构)的免费库(LGPL)? 重点是,我自己可以做到这一点,但我不想重新发明已经很好的骑行轮:) 提前致谢! 所以我的事情是,我有一个zip文件,包含多个文件和目录,可能包含更多文件。 我正在寻找的是一种方便的方法,如何将这个树结构提取到一个对象图中,无论它是否是一个TreeMap。 例如:一个HashMap : {‘root’ => ‘HashMap : {‘file1.png’ => byte[] content}}

Java zip字符编码

我正在使用以下方法将文件压缩为zip文件: import java.util.zip.CRC32; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; public static void doZip(final File inputfis, final File outputfis) throws IOException { FileInputStream fis = null; FileOutputStream fos = null; final CRC32 crc = new CRC32(); crc.reset(); try { fis = new FileInputStream(inputfis); fos = new FileOutputStream(outputfis); final ZipOutputStream zos = new ZipOutputStream(fos); zos.setLevel(6); final ZipEntry ze = […]

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

在什么情况下java.util.zip.ZipFile.close()会抛出IOException? 它的方法签名表明它可以被抛出,但是从源代码中似乎没有任何可能发生这种情况的地方,除非它是在本机代码中。 如果有exception,可以采取哪些纠正措施?

为什么java会抱怨有大量条目的jar文件?

我偶然发现了以下问题 – 当我创建包含超过65k条目的.jar文件时,java会抱怨“无效或损坏jarfile”。 例: $ # in fresh dir $ for i in {1..70000}; do touch $i; done $ jar cf app.jar {1..70000} $ java -jar app.jar Error: Invalid or corrupt jarfile app.jar 但如果我使用少量文件,它的工作原理如下: $ jar cf app.jar {1..60000} $ java -jar app.jar no main manifest attribute, in app.jar 我听说旧的.zip文件格式有65k文件限制,但Java 7默认情况下应该使用ZIP64。 为什么会这样? 有办法解决吗?

在byte 中创建内存中的zip文件。 Zip文件总是被破坏了

我的创建的zip文件有问题。 我正在使用Java 7.我尝试用字节数组创建一个zip文件,其中包含两个或更多Excel文件。 应用程序完成,无任何例外。 所以,我认为一切都很好。 在我尝试打开zip文件后,Windows 7出现了一条错误消息,即zip文件可能已损坏。 我无法打开它,我不知道为什么……! 我搜索了这个问题,但我发现的代码片段看起来与我的实现完全相同。 这是我的代码: if (repsList.size() > 1) { String today = DateUtilities.convertDateToString(new Date(), “dd_MM_yyyy”); String prefix = “recs_” + today; String suffix = “.zip”; ByteArrayOutputStream baos = null; ZipOutputStream zos = null; try { baos = new ByteArrayOutputStream(); zos = new ZipOutputStream(baos); for (RepBean rep : repsList) { […]

读取jar文件中的zip文件

以前我们的Web应用程序中有一些zip文件。 我们希望在zip文件中删除特定的文本文档。 这不是问题: URL url = getClass().getResource(zipfile); ZipFile zip = new ZipFile(url.getFile().replaceAll(“%20″, ” “)); Entry entry = zip.getEntry(“file.txt”); InputStream is = zip.getInputStream(entry); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine(); while (line != null) { // do stuff } 但是我们已经将这些zip文件移动到另一个模块中,并希望将它们打包到jar中。 不幸的是,创建ZipFile现在失败了。 我可以为zip获得一个InputStream :但是我无法获得条目本身的输入流。 InputStream is = getClass().getResourceAsStream(zipfile); ZipInputStream zis = new ZipInputStream(is); ZipEntry […]

使用java下载zip文件?

我正在使用Java从Web服务器下载zip文件但不知何故我在每个文件中丢失大约2kb。 我不知道为什么因为相同的代码可以与其他格式一起使用,例如文本,mp3和额外的。 任何帮助表示赞赏? 这是我的代码。 public void download_zip_file(String save_to) { try { URLConnection conn = this.url.openConnection(); conn.setDoOutput(true); conn.setDoInput(true); conn.setRequestProperty(“content-type”, “binary/data”); InputStream in = conn.getInputStream(); FileOutputStream out = new FileOutputStream(save_to + “tmp.zip”); byte[] b = new byte[1024]; int count; while ((count = in.read(b)) > 0) { out.write(b, 0, count); } out.close(); in.close(); } catch (IOException e) { […]

在Android中加密和解密zip文件?

我正在使用此代码: http : //examples.javacodegeeks.com/core-java/crypto/encrypt-decrypt-file-stream-with-des用于加密我在Android应用程序中使用的zip文件。它工作得非常好当我使用java代码尝试使用zip文件时,但是当我在Android应用程序中尝试相同的方法时 – 它解密文件但我得到的文件已损坏且无法打开它。 日志: 04-19 10:58:25.711: W/System.err(6752): net.lingala.zip4j.exception.ZipException: zip headers not found. probably not a zip file 04-19 10:58:25.721: W/System.err(6752): at net.lingala.zip4j.core.HeaderReader.readEndOfCentralDirectoryRecord(HeaderReader.java:122) 当我尝试使用winzip在Windows上打开相同的文件时,它会显示: Does not appear to be a valid archive file. 更新:: public class EncryptDecryptFileStreamWithDES { private static Cipher ecipher; private static Cipher dcipher; // 8-byte initialization vector private static byte[] […]

使用Java中的Zip和GZip文件

自从我完成Java I / O以来已经有一段时间了,我不知道使用Zip和GZip文件的最新“正确”方法。 我不一定需要一个完整的工作演示 – 我主要是寻找合适的接口和方法。 是的,我可以查看任何关于此的随机教程,但性能是一个问题(这些文件可能变得非常大),我确实关心使用最好的工具。 我将要实施的基本流程: 将一堆文件(可能是压缩,gzip或两者)下载到临时文件夹。 将所有解压缩的文件添加到临时文件夹中的新zip文件中。 输入文件可能会被压缩和存档多次。 例如,“完全提取”应该采取以下任何输入(我无法控制这些输入),并留下foo.txt : foo.txt.gz foo.txt.zip foo.txt.gz.zip foo.txt.zip.gz … foo.txt.gz.gz.gz.zip.gz.zip.zip.gz.gz … 然后,我可能会留下foo.txt , bar.mp3 , baz.exe – 所以我只是将它们全部添加到一个带有一些通用名称的新zip文件中。 问题: 文件大小是一个潜在的问题,我应该快速使用哪些(接口/类/方法): 提取zip文件? 提取gzip文件? 写zip文件? 在写回磁盘之前,我最好将各个提取的文件保存在内存中吗? 要么, 潜在的大文件是不是一个坏主意?