Tag: zip

为什么ZipInputStream无法读取ZipOutputStream的输出?

我坚持这个junit测试: public void test() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); ZipOutputStream zipOut = new ZipOutputStream( out ); zipOut.putNextEntry( new ZipEntry( “file” ) ); zipOut.write( (new byte[] { 0x01, 0x02, 0x03 }) ); zipOut.closeEntry(); zipOut.close(); ZipInputStream zipIn = new ZipInputStream( new ByteArrayInputStream( out.toByteArray() ) ); ZipEntry entry = zipIn.getNextEntry(); assertNotNull( entry ); assertEquals( “file”, […]

帮助从.Net创建Zip文件并从Java读取它们

我正在尝试从.Net创建一个可以从Java代码中读取的Zip文件。 我已经使用SharpZipLib来创建Zip文件,但是如果根据#ZipLib库的CheckZip函数生成的文件是有效的并且可以通过WinZip或WinRar成功解压缩我尝试使用Java解压缩时总是会出错Java中的.Utils.Zip类。 问题似乎是在SharpZipLib编写的错误标题中,我也在SharpDevelop论坛上发布了一个问题,但没有结果(请参阅http://community.sharpdevelop.net/forums/t/8272.aspx获取信息)但没有结果。 有人使用.Net压缩Zip文件并使用Java.Utils.Zip类对其进行解压缩的代码示例吗? 关心马西莫

在Java中有效地读取zip文件

我正在开发一个可以处理大量数据的项目。 我有很多(数千个)zip文件,每个文件包含一个简单的txt文件,包含数千行(大约80k行)。 我目前正在做的是以下内容: for(File zipFile: dir.listFiles()){ ZipFile zf = new ZipFile(zipFile); ZipEntry ze = (ZipEntry) zf.entries().nextElement(); BufferedReader in = new BufferedReader(new InputStreamReader(zf.getInputStream(ze))); … 通过这种方式,我可以逐行读取文件,但它的定义太慢了。 鉴于需要读取大量文件和行,我需要以更有效的方式阅读它们。 我找了一个不同的方法,但我找不到任何东西。 我认为我应该使用的是用于密集I / O操作的java nio API,但我不知道如何将它们与zip文件一起使用。 真的很感激任何帮助。 谢谢, 马尔科

Uzip文件夹递归-android

我试图解压缩压缩文件(此文件包含许多子文件夹和文件)。 I am not able to create sub-folders while unzipping the file. 每次我收到错误说: No such file or directory. 我搜索了很多关于这个的信息: Android – 解压缩文件夹? http://www.roseindia.net/tutorial/java/corejava/zip/ZipIsDirectory.html 在Android应用程序中解压缩sd卡上的压缩文件 如何在Java中递归解压缩文件? 但是,没有任何帮助我。 以下是我的尝试: public class UnZipper { private static final String TAG = “UnZip”; private String mFileName, mDestinationPath; public UnZipper(String fileName, String destinationPath) { mFileName = fileName; mDestinationPath = destinationPath; } […]

java.util.zip – ZipInputStream vs ZipFile

我有一些关于java.util.zip库的一般性问题。 我们基本上做的是导入和导出许多小组件。 以前,这些组件是使用单个大文件导入和导出的,例如: 请注意,导入期间组件的顺序是相关的。 现在每个组件都应该占用自己的文件,该文件应该是外部版本的,QA-ed,bla,bla。 我们决定导出的输出应该是一个zip文件(包含所有这些文件),我们导入的输入应该是一个类似的zip文件。 我们不想在我们的系统中爆炸zip。 我们不希望为每个小文件打开单独的流。 我目前的问题: Q1。 ZipInputStream保证zip条目(小文件)的读取顺序与我们使用ZipOutputStream的导出插入的顺序相同吗? 我认为阅读是这样的: ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis)); ZipEntry entry; while((entry = zis.getNextEntry()) != null) { //read from zis until available } 我知道中央zip目录放在zip文件的末尾,但是内部的文件条目有顺序。 我也知道依靠订单是一个丑陋的想法,但我只想记住所有的事实。 Q2。 如果我使用ZipFile (我更喜欢),调用getInputStream()几百次会对性能产生什么影响? 它会比ZipInputStream解决方案慢得多吗? zip只打开一次, ZipFile由RandomAccessFile支持 – 这是正确的吗? 我认为阅读是这样的: ZipFile zipfile = new ZipFile(argv[0]); Enumeration e = zipfile.entries();//TODO: assure the order […]

使用Java修改ZIP存档中的文本文件

我的用例要求我打开一个txt文件,比如abc.txt,它位于zip存档中,其中包含表单中的键值对 键1 =值 键2 =值 ..等等每个键值对在一个新行中。 我必须更改对应于某个键的一个值,并将文本文件放回到存档的新副本中。 我怎么在java中这样做? 我到目前为止的尝试: ZipFile zipFile = new ZipFile(“test.zip”); final ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(“out.zip”)); for(Enumeration e = zipFile.entries(); e.hasMoreElements(); ) { ZipEntry entryIn = (ZipEntry) e.nextElement(); if(!entryIn.getName().equalsIgnoreCase(“abc.txt”)){ zos.putNextEntry(entryIn); InputStream is = zipFile.getInputStream(entryIn); byte [] buf = new byte[1024]; int len; while((len = (is.read(buf))) > 0) { zos.write(buf, 0, […]

ZipEntry路径名的文件分隔符?

ZIP条目存储条目的完整路径名,因为(我确定下一部分)ZIP存档未组织为目录。 元数据包含有关如何存储文件的信息(内部目录)。 如果我在Windows中创建ZIP文件,当我在另一个操作系统(例如Mac OS X)中解压缩数据时,文件结构将保持与以前一样在Windows中。 这是因为解压缩器是为处理这个而设计的,还是因为ZIP中的文件分隔符是标准的? 我问这个是因为我试图使用压缩文件的名称在ZIP文件中找到一个条目。 但是我应该使用哪个文件分隔符使其在Windows以外的系统中运行? 我正在使用Java,而ZipEntry的方法: .getName()为我提供了使用Windows文件分隔符的路径。 如果我使用java File.separator分隔符使其在另一个操作系统上工作,这是否足够? 或者我是否必须尝试使用​​每个可能的分隔符找到我的文件?

如何在Java中创建Uncompressed Zip存档

我正在使用Java的Zip实用程序包,并想知道如何创建一个没有压缩的zip文件。 将级别设置为0无济于事。 这是正确的吗? 此外,当我使用STORED方法时,它抛出以下exception: java.util.zip.ZipException: STORED entry missing size, compressed size, or crc-32 我可以设置大小,但现在抛出以下exception: java.util.zip.ZipException: invalid entry crc-32 我只是通过在网上搜索来关注所有可用的例子,我猜我无法正确理解它。 如果有人可以帮助我并提供我纠正我可能正在做的问题的建议,那将是很棒的。

使用Groovy解压缩存档

Groovy中是否有内置的支持来处理Zip文件(groovy方式)? 或者我是否必须使用Java的java.util.zip.ZipFile来处理Groovy中的Zip文件?

读取zip存档中的文本文件

我有zip存档,其中包含一堆纯文本文件。 我想解析每个文本文件数据。 这是我到目前为止所写的内容: try { final ZipFile zipFile = new ZipFile(chooser.getSelectedFile()); final Enumeration entries = zipFile.entries(); ZipInputStream zipInput = null; while (entries.hasMoreElements()) { final ZipEntry zipEntry = entries.nextElement(); if (!zipEntry.isDirectory()) { final String fileName = zipEntry.getName(); if (fileName.endsWith(“.txt”)) { zipInput = new ZipInputStream(new FileInputStream(fileName)); final RandomAccessFile rf = new RandomAccessFile(fileName, “r”); String line; while((line = […]