`
Bluesnails
  • 浏览: 24475 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

如何保存一个ZipInputStream的副本?

    博客分类:
  • J2SE
阅读更多
java 代码
  1. package ziptest;   
  2.   
  3. import java.io.FileInputStream;   
  4. import java.io.FileNotFoundException;   
  5. import java.io.IOException;   
  6. import java.io.InputStream;   
  7. import java.util.zip.ZipEntry;   
  8. import java.util.zip.ZipInputStream;   
  9.   
  10. /**  
  11.  * @version 2007-10-30  
  12.  * @author: Calvin Lee  
  13.  */  
  14. public class ZipTest {   
  15.     public static void main(String[] args) {   
  16.   
  17.         try {   
  18.             ZipInputStream zin = new ZipInputStream(new FileInputStream(   
  19.                     "d:/websale_rfid.zip"));   
  20.             FileInputStream filein = new FileInputStream("d:/websale_rfid.zip");   
  21.                         ZipInputStream zin2 = new ZipInputStream(zin);   
  22.                
  23.             ZipEntry entry;   
  24.             try {   
  25.                 while ((entry = zin.getNextEntry()) != null) {   
  26.                     System.out.println("++++++++++++++++" + (entry.getName()));   
  27.                     zin.closeEntry();   
  28.                 }  

 

  1.                 //zin2没能够正确形成   
  2.                 while ((entry = zin2.getNextEntry()) != null) {   
  3.                     System.out.println("~~~~~~~~~~~~~~~~~~" + (entry.getName()));   
  4.                     zin2.closeEntry();   
  5.                 }   
  6.   
  7.             } catch (IOException e) {   
  8.                 e.printStackTrace();   
  9.             }   
  10.         } catch (FileNotFoundException e) {   
  11.             e.printStackTrace();   
  12.         }   
  13.   
  14.     }   
  15.   
  16.       

输出为

++++++++++++++++forms.xml
++++++++++++++++gpd.xml
++++++++++++++++processdefinition.xml
++++++++++++++++processimage.jpg

而~~~~并没有输出

ZipInputStream zin2 = new ZipInputStream(zin); 为什么代码中zin2没能正确获得...???

如果我想重新读取一次zip流该怎么实现呢?------------------先不要告诉我根据FileInputStream再生成一次.......

直接根据原来的zip流不可以吗?

分享到:
评论
2 楼 yangxiutian 2011-12-08  
另外我用Zip流时遇到了中文不兼容的问题java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:299)

有什么方法解决不
1 楼 yangxiutian 2011-12-08  
Zip流套Zip流明显是有问题的,你想再一次使用ZipInputStream其实只需要重置一下就行了  zip.reset();     希望答案对你有用

相关推荐

    ZipInputStream解压有中文名报错问题解决

    1. **自定义解压逻辑**:可以创建一个自定义的`ZipInputStream`包装类,覆盖`getNextEntry()`方法,以便在读取文件名时,先将其转换为正确的字符编码。 2. **使用第三方库**:例如Apache Commons Compress或Google...

    java 支持中文解压:一行代码解决 java.util.zip.ZipInputStream 中文乱码;--文件处理通用类

    1、文件解压zip通用机制方法、一行代码支持中文; 2、一行代码解决 java.util.zip.ZipInputStream 中文乱码; 3、删除指定路径内的所有文件通用机制方法;

    java实现文件解压缩,ZipInputStream,ZipOutputStream

    java实现文件解压缩,ZipInputStream,ZipOutputStream

    Java实现文件的压缩和解压

    基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...

    使用java代码替换zip内的文件.docx

    在这个例子中,有一个名为`ZipCopyTest`的类,它包含一个主方法`main`,以及两个辅助方法`copyZipStream`和`copyStream`。 在`main`方法中,首先定义了源文件`srcPath`和目标文件`outPath`,接着创建了`...

    使用ICSharpCode.SharpZipLib压缩和解压文件

    首先创建一个FileStream用于读取zip文件,然后用ZipInputStream包裹这个FileStream。接下来,遍历ZipInputStream中的每个ZipEntry,为每个Entry创建一个新的FileStream,将解压缩的数据写入这个新的FileStream。 ...

    详解Java无需解压直接读取Zip文件和文件内容

    我们可以使用ZipInputStream类的构造函数创建一个ZipInputStream对象,然后使用其getNextEntry()方法获取Zip文件中的每个Entry。 在上面的代码中,我们使用了ZipInputStream类来读取Zip文件。首先,我们创建了一个...

    Android 在线下载压缩包并解压到指定目录.zip

    然后,遍历`ZipInputStream`,每次读取一个`ZipEntry`,创建对应的`FileOutputStream`,并将`ZipInputStream`的数据写入到新的文件。 6. **指定解压目录**: 在解压前,确保目标目录存在。如果不存在,使用`File....

    Java实现的带密码压缩与解压zip文件源码

    4. **解压过程**:解压时,我们需要创建一个`ZipInputStream`,然后逐个读取ZIP文件中的`ZipEntry`。在读取每个条目之前,我们需要使用正确密码设置`ZipInputStream`。然后,我们可以创建一个输出流,将解压的条目...

    一个简单的Java解压Zip工程

    总结,这个简单的Java解压Zip工程的核心是利用Java标准库中的`java.util.zip`包,通过`ZipInputStream`和`ZipEntry`来解压ZIP文件中的每一个条目,并将它们保存到本地文件系统中。在实际项目中,我们可以根据需求...

    Java提取IPA中的png文件 源码

    2. 创建`ZipInputStream`:使用`new ZipInputStream(fileInputStream)`创建一个Zip输入流。 3. 遍历Zip条目:通过调用`ZipInputStream.getNextEntry()`来获取每个条目,直到没有更多的条目。 4. 检查条目类型:对于...

    Java 解压缩助手

    开发者可以通过`ZipInputStream.getNextEntry`获取下一个条目,然后使用`ZipEntry.getName`和`ZipEntry.getSize`等方法获取相关信息。 4. **解压缩过程**:要解压缩ZIP文件,我们首先创建一个ZipInputStream,然后...

    android、java、加密解压工具类库

    首先,我们要提到的是一个名为“zip4j”的开源库,它是Java平台上的一个强大的压缩和解压库,同时也支持Android平台。在标题和描述中提及的资源中,我们可以看到`zip4j_1.3.1.jar`,这是zip4j的1.3.1版本的二进制库...

    MyApplication21.zip_java_zip

    1. 创建一个`ZipInputStream`实例,将其关联到ZIP文件的输入流。 2. 使用`ZipInputStream`的`getNextEntry`方法获取下一个ZIP条目。 3. 读取条目的数据,通常通过`BufferedReader`或`BufferedInputStream`进行。 4. ...

    Java Zip压缩:简化文件和文件夹的压缩操作

    对于解压缩,你需要一个`FileInputStream`指向Zip文件,然后创建一个`ZipInputStream`实例。每次调用`getNextEntry`方法时,它都会返回下一个Zip条目。你可以检查条目的名称,然后根据需要读取内容。每个条目读取...

    java实现压缩解压

    调用`ZipInputStream.getNextEntry()`获取下一个条目,然后将`ZipInputStream`的数据写入对应的`FileOutputStream`。 - 当所有条目都处理完毕后,关闭`ZipInputStream`。 在处理中文文件名时,需要注意字符编码...

    JAVA解压ZIP文件(可解压中文)

    在解压ZIP文件时,首先需要创建一个`FileInputStream`对象来读取ZIP文件,然后通过`new ZipInputStream(fileInputStream)`创建一个`ZipInputStream`对象。接下来,我们可以通过调用`ZipInputStream`的`getNextEntry...

    JAVA文件压缩与解压缩实践(源代码+论文).zip

    同样,解压缩时,你需要创建一个`ZipInputStream`,然后逐个读取并解压文件。 例如,压缩一个目录中的所有文件,可以使用以下步骤: 1. 遍历目录,获取所有文件和子目录。 2. 对每个文件,创建一个`...

    Java_zip.rar_java zip_unzip_zip

    2. 创建一个`ZipInputStream`,传入`FileInputStream`。 3. 循环调用`getNextEntry()`来获取ZIP文件中的每一个条目。 4. 对于每个条目,如果是个文件,创建一个新的文件或目录(根据条目的类型)。 5. 使用`read...

    使用java解压缩zip文件

    1. **ZipInputStream**: 这个类实现了输入流接口,可以从一个字节流中读取ZIP文件的内容。我们可以使用它逐个读取ZIP文件中的每个条目(entry)。 2. **ZipEntry**: 表示ZIP文件中的一个条目,包含条目的名称、大小...

Global site tag (gtag.js) - Google Analytics