java实现zip与unzip -凯发k8网页登录

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

java实现zip与unzip

jdk提供了zip相关的类方便的实现压缩和解压缩。使用方法很简单。下边分别是压缩和解压缩的简单事例
1,压缩的
import java.io.bufferedinputstream;
import java.io.bufferedoutputstream;
import java.io.file;
import java.io.fileinputstream;
import java.io.fileoutputstream;
import java.util.zip.zipentry;
import java.util.zip.zipoutputstream;

public class zip {
    
static final int buffer = 2048;

    
public static void main(string argv[]) {
        
try {
            bufferedinputstream origin 
= null;
            fileoutputstream dest 
= new fileoutputstream("e:\\test\\myfiles.zip");
            zipoutputstream out 
= new zipoutputstream(new bufferedoutputstream(
                    dest));
            
byte data[] = new byte[buffer];
            file f 
= new file("e:\\test\\a\\");
            file files[] 
= f.listfiles();

            
for (int i = 0; i < files.length; i{
                fileinputstream fi 
= new fileinputstream(files[i]);
                origin 
= new bufferedinputstream(fi, buffer);
                zipentry entry 
= new zipentry(files[i].getname());
                out.putnextentry(entry);
                
int count;
                
while ((count = origin.read(data, 0, buffer)) != -1{
                    out.write(data, 
0, count);
                }

                origin.close();
            }

            out.close();
        }
 catch (exception e) {
            e.printstacktrace();
        }

    }

}


2,解压缩的。
import java.io.bufferedinputstream;
import java.io.bufferedoutputstream;
import java.io.file;
import java.io.fileoutputstream;
import java.util.enumeration;
import java.util.zip.zipentry;
import java.util.zip.zipfile;

public class unzip {
    
static final int buffer = 2048;

    
public static void main(string argv[]) {
        
try {
            string filename 
= "e:\\test\\myfiles.zip";
            string filepath 
= "e:\\test\\";
            zipfile zipfile 
= new zipfile(filename);
            enumeration emu 
= zipfile.entries();
            
int i=0;
            
while(emu.hasmoreelements()){
                zipentry entry 
= (zipentry)emu.nextelement();
                
//会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。
                if (entry.isdirectory())
                
{
                    
new file(filepath  entry.getname()).mkdirs();
                    
continue;
                }

                bufferedinputstream bis 
= new bufferedinputstream(zipfile.getinputstream(entry));
                file file 
= new file(filepath  entry.getname());
                
//加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件
                
//而这个文件所在的目录还没有出现过,所以要建出目录来。
                file parent = file.getparentfile();
                
if(parent != null && (!parent.exists())){
                    parent.mkdirs();
                }

                fileoutputstream fos 
= new fileoutputstream(file);
                bufferedoutputstream bos 
= new bufferedoutputstream(fos,buffer);           
                
                
int count;
                
byte data[] = new byte[buffer];
                
while ((count = bis.read(data, 0, buffer)) != -1)
                
{
                    bos.write(data, 
0, count);
                }

                bos.flush();
                bos.close();
                bis.close();
            }

            zipfile.close();
        }
 catch (exception e) {
            e.printstacktrace();
        }

    }

}

posted on 2007-08-09 09:33 dreamstone 阅读(20546) 评论(8)     所属分类: jdk相关

# re: java实现zip与unzip 2007-08-10 14:32

你这个应该是不支持中文的吧  回复     

# re: java实现zip与unzip 2007-08-10 15:28 dreamstone

这个只是个简单的demo,想支持中文,变通一下就可以  回复     

# re: java实现zip与unzip 2007-09-18 16:52

多谢多谢
ps:

import java.util.zip.zipentry;
import java.util.zip.zipoutputstream;
改成
import org.apache.tools.zip.*;

然后把
enumeration emu = zipfile.entries();
改成
enumeration emu = zipfile.getentries();
就可以支持中文了  回复     

# re: java实现zip与unzip 2007-11-07 17:09

楼主可以发个包给我吗?
org.apache.tools包在网上没有找到
我的邮箱是592262029@qq.com  回复     

# re: java实现zip与unzip 2008-03-27 23:43

完全使用ant会更简单:
static public void unzip(string zipfilepath, string destinationdir) {

final class expander extends expand {
public expander() {
project = new project();
project.init();
tasktype = "unzip";
taskname = "unzip";
target = new target();
}
}
expander expander = new expander();
expander.setsrc(new file(zipfile));
expander.setdest(new file(destdir));
expander.execute();
}  回复     

# re: java实现zip与unzip 2008-08-04 17:41

收藏了  回复     

# re: java实现zip与unzip 2010-09-07 11:10

第一个压缩方法,只支持e:\\test\\a\\下全是文件的场景。
如果e:\\test\\a\\下还有子文件夹,就不支持了。  回复     

# re: java实现zip与unzip[未登录] 2012-08-27 11:32

很好。。  回复     


只有注册用户后才能发表评论。


网站导航:
              
 
网站地图