精华内容
下载资源
问答
  • ZipOutputStream使用

    万次阅读 2016-12-15 20:28:47
    ZipOutputStream使用代码如下: package cn.lfsenior.zipout; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io....

    ZipOutputStream使用代码如下:

    package cn.lfsenior.zipout;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    public class MyZip {
    	/**
    	 * 压缩文件
    	 * @param zipFileName   压缩文件全路径名 
    	 * @param inputFile		压缩文件夹全路径名
    	 * @throws Exception
    	 */
    	public void zip(String zipFileName, File inputFile) throws Exception {
    		//创建压缩流对象
    		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
    		//调用Zip方法压缩文件夹
    		zip(out, inputFile, "");
    		System.out.println("压缩中....");
    		//关闭ZipOutputStream流
    		out.close();
    	}
    
    	/**
    	 * 压缩文件夹的方法
    	 * @param out ZipOutputStream对象 
    	 * @param f	File对象,压缩文件夹对象
    	 * @param base  进入点的名字
    	 * @throws Exception
    	 */
    	public void zip(ZipOutputStream out, File f, String base) throws Exception {
    		if (f.isDirectory()) {
    			//如果是文件夹,则获得该文件夹中的所有对象,进行一下处理,并利用递归思想进行全部修改
    			File[] fl = f.listFiles();
    			//创建进入点
    			out.putNextEntry(new ZipEntry(base+"/"));
    			//如果进入点名字的长度为0的话说明是第一次进来,不然的话加上“/”
    			base=base.length()==0?"":base+"/";
    			for (int i = 0; i < fl.length; i++) {
    				//调用该方法,base为原base+“该文件的相对路径”
    				zip(out, fl[i],base+fl[i].getName());
    			}
    		} else {
    			//如果是文件,先创建进入点
    			out.putNextEntry(new ZipEntry(base));
    			//创建输出流对象
    			FileInputStream in = new FileInputStream(f);
    			//创建b接收字节数据
    			int b;
    			System.out.println(base);
    			//利用while循环进行读取文件内容
    			while ((b = in.read()) != -1) {
    				//调用ZipOutputStream的writer方法写出文件
    				out.write(b);
    			}
    			//关闭FileInputStream流
    			in.close();
    		}
    	}
    	
    	public static void main(String[] args) {
    		MyZip book=new MyZip();
    		try {
    			book.zip("E:/hello.zip", new File("E:/hello"));
    			System.out.println("压缩完成");
    		} catch (Exception e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		
    	}
    }
    


    展开全文
  • ZipOutputStream.java1.从jdk的src.zip取得ZipOutputStream.java原始码,另存新档存到c:\java\util\zip这个资料夹里,档名改为CZipOutputStream.java。2.开始修改原始码,将class名称改为CZipOutputStream3.建构式也...

    ZipOutputStream.java

    1.从jdk的src.zip取得ZipOutputStream.java原始码,另存新档存到c:\java\util\zip这个资料夹里,档名改为CZipOutputStream.java。

    2.开始修改原始码,将class名称改为CZipOutputStream

    3.建构式也必须更改为CZipOutputStream

    4.新增member,这个member记录编码方式

    private String encoding="UTF-8";

    5.再新增一个建构式(这个建构式可以让这个class在new的时候,设定档名的编码)

    public CZipOutputStream(OutputStream out,String encoding) {

    super(out, new Deflater(Deflater.DEFAULT_COMPRESSION, true));

    usesDefaultDeflater = true;

    this.encoding=encoding;

    }

    6.找到byte[] nameBytes = getUTF8Bytes(e.name);(有二个地方),将它修改如下:

    byte[] nameBytes = null;

    try

    {

    if (this.encoding.toUpperCase().equals("UTF-8"))

    nameBytes =getUTF8Bytes(e.name);

    else

    nameBytes= e.name.getBytes(this.encoding);

    }

    catch(Exception byteE)

    {

    nameBytes=getUTF8Bytes(e.name);

    }

    7.将档案储存在c:\java\util\zip这个资料夹内,请记得一定要有这个路径结构,

    才能把CZipOutputStream.class放在正确的package结构里

    二、ZipInputStream.java

    1.从jdk的src.zip取得ZipInputStream.java原始码,另存新档存到c:\java\util\zip这个资料夹里,档名改为CZipInputStream.java。

    2.开始修改原始码,将class名称改为CZipInputStream

    3.建构式也必须更改为CZipInputStream

    4.新增member,这个member记录编码方式

    private String encoding="UTF-8";

    5.再新增一个建构式如下(这个建构式可以让这个class在new的时候,设定档名的编码)

    public CZipInputStream(InputStream in,String encoding) {

    super(new PushbackInputStream(in,512),new Inflater(true),512);

    usesDefaultInflater = true;

    if(in == null) {

    throw new NullPointerException("in is null");

    }

    this.encoding=encoding;

    }

    6.找到ZipEntry e = createZipEntry(getUTF8String(b, 0, len));这一行,将它改成如下:

    ZipEntry e=null;

    try

    {

    if (this.encoding.toUpperCase().equals("UTF-8"))

    e=createZipEntry(getUTF8String(b, 0, len));

    else

    e=createZipEntry(new String(b,0,len,this.encoding));

    }

    catch(Exception byteE)

    {

    e=createZipEntry(getUTF8String(b, 0, len));

    }

    posted on

    2005-11-09 17:44

    阿狗

    阅读(308)

    评论(0)

    编辑

    收藏

    展开全文
  • zipoutputStream的简单使用

    千次阅读 2020-11-07 17:51:32
    最近在改bug的时候遇到了一个与zipoutputStream相关的代码,虽然最终不是这处代码的问题,但是自己还是想总结一下zipoutputStream的使用 二 zipoutputStream 类图 三 zipoutputStream使用 zipoutputStream是...

    一 原因

     最近在改bug的时候遇到了一个与zipoutputStream相关的代码,虽然最终不是这处代码的问题,但是自己还是想总结一下zipoutputStream的使用

    二 zipoutputStream 类图

    三 zipoutputStream使用

         zipoutputStream是fileOutputStream中的一种,它可以将内容直接写入到zip包中。一般创建zipoutputStream通常是封装一个FileOutputStream,然后在每写入一个文件之前,需要先调用一次putNextEntry,然后使用write写入byte[]类型的数据,当写入完毕的时候使用colseEntry来结束这个文件的打包

          其中

      ZipEntry  表示压缩文件的条目   (就相当与java文件中的directory目录一样)

        putNextEntry 开始编写新的ZIP文件条目并将流定位到条目数据的开头(换一个新的开始从头写).如果仍然有效,则关闭当前的目录,如果没有为目录指定相关的压缩方法,则使用默认的压缩方法。如果没有设置时间,则默认使用当前时间  (就是将条目放到zip包中)

     代码说明:

          

    import org.junit.Test;
    
    import java.io.*;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    public class ziptest {
            @Test
            public void test() throws IOException {
                //File.separator代表了当前系统的文件分割符
                //linux使用/分割符会报错找不到文件,window系统下/和\都可以作为文件路径
                System.out.println("File.separator="+ File.separator);
    
                File file = new File("D:" + File.separator + "upgrade46.txt");
                File zipFile = new File("d:" + File.separator + "hello.zip");
                //读取相关的文件
                InputStream input = new FileInputStream(file);
                //设置输出流
                ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(
                        zipFile));
    
                zipOut.putNextEntry(new ZipEntry(file.getName()));
                // 设置注释
                zipOut.setComment("hello");
                int temp = 0;
                //读取相关的文件
                while((temp = input.read()) != -1){
                    //写入输出流中
                    zipOut.write(temp);
                }
                //关闭流
                input.close();
                zipOut.close();
            }
    }
    

     实现效果:

    实现原理:

     

      

    展开全文
  • java ZipOutputStream

    千次阅读 2011-02-02 12:01:00
    java ZipOutputStream
    实现代码如下:(在当前包文件夹下新建一个文本文件:123.txt,将其压缩到test.zip)
    
    import java.io.BufferedOutputStream;
    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.util.zip.Adler32;
    import java.util.zip.CheckedOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    public class Zipstream {
     public static void main(String[] args) throws Exception{
      FileOutputStream f=new FileOutputStream("text.zip");
      CheckedOutputStream csum=new CheckedOutputStream(f,new Adler32());
      ZipOutputStream zos=new ZipOutputStream(csum);
      BufferedOutputStream out = new BufferedOutputStream(zos);
      zos.setComment("A test of Java Ziping!");
      
      BufferedReader in =new BufferedReader(new FileReader("123.txt"));
      zos.putNextEntry(new ZipEntry("123.txt"));
      int c;
      while((c = in.read()) != -1){
       out.write(c); 
      }
      in.close();
      out.flush();
      out.close();
     }
    }
    展开全文
  • private async Task CompressFolderAsync(string path, ZipOutputStream zipStream, int folderOffset, CancellationToken cancellationToken) { string[] files = Directory.GetFiles(path); foreach ...
  • <div><p>This is a very rough first pass at adding async support to ZipOutputStream. <p>All method doing synchronous stream writes have been duplicated with an asynchronous counterpart, starting from ...
  • ZipOutputStream s = new ZipOutputStream(File.Create(ZipedFile)); 构造函数之后 文件就已经创建出来了 只是 0kb s.Write(buffer, 0, buffer.Length); 内容写进去了 写到服务器里面了 还设置了密码 ...
  • package codemaking.util;...import org.apache.tools.zip.ZipOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.zip.ZipInputStream;import java.u...
  • import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream;... private ZipOutputStream zipOutputStream; CompossFile(String outFile, String[] FileList) throws IOException
  • ZipOutputStream是个啥

    2019-10-10 13:45:48
    在日常的使用中经常会使用到像WinRAR或WinZIP这样的压缩文件,通过这些软件可以把一个很大的文件进行压缩以方便...ZipOutputStream:如果要想完成一个文件或文件夹的压缩,要使用ZipOutputStream类完成,ZipOutputS...
  • 1.创建ZipOutPutStream流,利用BufferedOutputStream提个速. 2.新建zip方法,用来压缩文件,传参 3.zip方法利用putNextEntry来将目录点写入 4.递归目录数组 5.写入数据,关闭流 /** * 压缩 * @author ...
  • java zipoutputstream 的使用

    千次阅读 2015-12-24 23:13:45
    我们可以使用java 提供的api:zipoutputstream  public class TestZip { public static void main(String[] args) { ZipOutputStream out = null; try { out = new ZipOutputStream(new
  • Java 使用ZipOutputStream 进行打包操作

    千次阅读 2018-11-07 12:17:59
    Java 使用ZipOutputStream 进行打包操作
  • ZipOutputStream压缩问题

    2011-01-06 10:06:31
    at org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:382) at com.wzsoft.gl.manager.impl.DocumentManagerImpl.findNodesByRoot(DocumentManagerImpl.java:84) at ...
  • ZipOutputStream压缩文件

    万次阅读 2012-08-20 18:22:37
    /**创建一个压缩文件,from为文件夹路径,to为创建好后压缩文件路径*/ public void CreateZip(String from,String to) throws IOException ...ZipOutputStream out=new ZipOutputStream(new FileOutputStream(new File
  • ZipOutputStream java mail

    2013-05-08 18:35:20
    把两个String变成两个文件,然后打包成Zip作为附件添加到邮件中,不能写磁盘。 import java.io.ByteArrayOutputStream; import java.io.IOException;...import java.util.zip.ZipOutputStream; public class MyZip
  • ZipOutputStream.closeEntry(); ZipOutputStream.close(); <p>I understand that for such/similar cases we have here job listeners. But the job listener gets only the result: <code>public void afterJobEnd...
  • ZipOutputStream zos = new ZipOutputStream(fos); try(InputStream inputStream = new FileInputStream(fileToAdd)) { while ((readLen = inputStream.read(buff)) != -1) { zos.write(buff, 0, ...
  • 解决ZipOutputStream压缩包内中文文件名乱码的问题,setEncoding("GBK")
  • OutputStream out = new FileOutputStream(zipFilePath);  BufferedOutputStream bos = new BufferedOutputStream(out);... ZipOutputStream zos = new ZipOutputStream(bos);  // 解决中文文件名乱码  ...
  • ZipInputStream和ZipOutputStream定义 压缩流 在日常中经常会使用到zip或rar这样的压缩文件,更加便利了我们日常文件的传输和使用。当然在java中 也提供了相应的输入输出流来压缩和解压gzip、zip和rar这样的文件...
  • 原先使用的是java.util.ZipOutputStream,而在这个类中,没有设置编码的方法;因此每次遇到中文的时候,都会变成乱码; 解决方案:        采用org.apache.tools.zip....
  • java实现文件解压缩,ZipInputStream,ZipOutputStream
  • 通过ZipOutputStream压缩文件夹中的文件
  • IO流,ZipOutputStream对文件压缩输出

    万次阅读 2018-05-27 13:02:42
    想要对文件进行压缩操作,这就需要用到ZipOutputStream来对文件压缩操作。首先需要指明的是:ZipOutputStream如果使用java自带的api操作需要1.7以上,否则会出现中文乱码,我测试过1.6和1.8,1.6会出现乱码,1.8则...
  • ZipOutputStream.EOCD_SIG; for(int curr = this.archive.read(); curr != -1; curr = this.archive.read()) { if (curr == sig[0]) { curr = this.archive.read(); if (curr =&#...
  • 本文整理匯總了Java中java.util.zip.ZipOutputStream.flush方法的典型用法代碼示例。如果您正苦於以下問題:Java ZipOutputStream.flush方法的具體用法?Java ZipOutputStream.flush怎麽用?Java ZipOutputStream....
  • 问题描述:项目中使用ZipOutputStream方法对Zip压缩包进行压缩、解压缩,没有密码的情况下是正常的,但加上密码就无法解压了,提示密码错误。 解决方法:将项目中的SharpZipLib插件升级到最新版本即可,是插件的小...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,505
精华内容 602
关键字:

zipoutputstream