Java on Line

和java的日子!

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  8 随笔 :: 0 文章 :: 28 评论 :: 0 Trackbacks
压缩文件夹代码:
import java.io.File;
import org.apache.tools.zip.ZipOutputStream; //这个包在ant.jar里,要到官方网下载
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipEntry;

public class CompressBook {
    
public CompressBook() {}

    
/*
    * inputFileName 输入一个文件夹
    * zipFileName 输出一个压缩文件夹
    
*/

    
public void zip(String inputFileName) throws Exception {
        String zipFileName 
= "c:\\test.zip"//打包后文件名字
        System.out.println(zipFileName);
        zip(zipFileName, 
new File(inputFileName));
    }


    
private void zip(String zipFileName, File inputFile) throws Exception {
        ZipOutputStream out 
= new ZipOutputStream(new FileOutputStream(zipFileName));
        zip(out, inputFile, 
"");
        System.out.println(
"zip done");
        out.close();
    }


    
private void zip(ZipOutputStream out, File f, String base) throws Exception {
        
if (f.isDirectory()) {
           File[] fl 
= f.listFiles();
           out.putNextEntry(
new org.apache.tools.zip.ZipEntry(base + "/"));
           base 
= base.length() == 0 ? "" : base + "/";
           
for (int i = 0; i < fl.length; i++{
           zip(out, fl[i], base 
+ fl[i].getName());
         }

        }
else {
           out.putNextEntry(
new org.apache.tools.zip.ZipEntry(base));
           FileInputStream in 
= new FileInputStream(f);
           
int b;
           System.out.println(base);
           
while ( (b = in.read()) != -1{
            out.write(b);
         }

         in.close();
       }

    }


    
public static void main(String [] temp){
        CompressBook book 
= new CompressBook();
        
try {
           book.zip(
"c:\\c");//你要压缩的文件夹
        }
catch (Exception ex) {
           ex.printStackTrace();
       }

    }

}

压缩文件代码:
import java.io.*;
import java.util.zip.*;//ZipOutputStream这个流在这里
import java.util.*;

public class ZipOutputStreamTest
{
     
public static void main(String[] args) throws Exception
     
{
       File f 
= new File("a.jpg");
       FileInputStream fis 
= new FileInputStream(f);
       BufferedInputStream bis 
= new BufferedInputStream(fis);
       
byte[] buf = new byte[1024];
       
int len;
       FileOutputStream fos 
= new FileOutputStream(f.getName()+".zip");
       BufferedOutputStream bos 
= new BufferedOutputStream(fos);
       ZipOutputStream zos 
= new ZipOutputStream(bos);//压缩包
       ZipEntry ze = new ZipEntry(f.getName());//这是压缩包名里的文件名
       zos.putNextEntry(ze);//写入新的 ZIP 文件条目并将流定位到条目数据的开始处

       
while((len=bis.read(buf))!=-1)
       
{
          zos.write(buf,
0,len);
          zos.flush();
       }

       bis.close();
       zos.close(); 
     }

}
posted on 2007-08-24 00:33 陈东 阅读(40868) 评论(24)  编辑  收藏 所属分类: Java基础

评论

# re: 用java压缩文件夹/文件[未登录] 2007-11-10 14:36 ad
不错 谢谢了  回复  更多评论
  

# re: 用java压缩文件夹/文件 2008-01-27 22:54
试过,真不错,谢谢了.  回复  更多评论
  

# re: 用java压缩文件夹/文件 2008-06-23 18:49 flymz
我用java.util.zip.ZipOutputStream;这个包也可以压缩!  回复  更多评论
  

# re: 用java压缩文件夹/文件 2008-10-12 21:17 xh
可以集成进jdk了  回复  更多评论
  

# re: 用java压缩文件夹/文件 2009-03-06 09:31 sem
非常感谢!  回复  更多评论
  

# re: 用java压缩文件夹/文件 2010-07-14 15:44 ne_akari
这代码写的真不规范。
把所有异常全都抛出去,算什么回事。
in.close();
这句代码,从语法上说:变量in明明是个局部变量,怎么会在代码块外面关闭。
从逻辑上说:不管是在处理文件夹还是文件,都要执行,那是什么逻辑。
博主最好能做个修改再放出来,以免误导别人。  回复  更多评论
  

# re: 用java压缩文件夹/文件 2010-11-16 13:25 ww
@flymz

碰到中文就会有乱码 用这个  回复  更多评论
  

# re: 用java压缩文件夹/文件[未登录] 2010-11-19 17:16 test
@ne_akari
喷子?有异常了不抛出留着干什么?  回复  更多评论
  

# re: 用java压缩文件夹/文件 2011-06-15 12:47 tye
中文乱码  回复  更多评论
  

# re: 用java压缩文件夹/文件 2011-09-14 09:44 eppen
@ne_akari
作为基类应该抛出异常,业务类负责捕获并定制错误消息  回复  更多评论
  

# re: 用java压缩文件夹/文件 2011-10-03 11:35 易元
总得处理一下了啊,各种异常都往上抛,下边不处理,抛到上边也不处理,这也叫异常处理吗???这只不过是编译器不报错罢了。  回复  更多评论
  

# re: 用java压缩文件夹/文件 2011-11-15 22:04 fskjb01
@ne_akari
人家只是说清楚问题(不清楚看标题),而把不相干的省略下而已,你这么多意见干嘛!!  回复  更多评论
  

# re: 用java压缩文件夹/文件 2011-12-15 16:44 hello223
瞎说八道  回复  更多评论
  

# re: 用java压缩文件夹/文件 2012-04-28 12:40 路人
@ne_akari
当然要抛出去了异常吃了 别人都看不到才不规范呢
  回复  更多评论
  

# re: 用java压缩文件夹/文件 2012-05-08 15:59 t
你看错了吧,博主只不过{}位置对应错了,in是没问题的!
else {
out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
FileInputStream in = new FileInputStream(f);
int b;
System.out.println(base);
while ( (b = in.read()) != -1) {
out.write(b);
}
in.close();
}  回复  更多评论
  

# re: 用java压缩文件夹/文件[未登录] 2012-12-15 15:10 小菜鸟
中文咋办  回复  更多评论
  

# re: 用java压缩文件夹/文件 2013-03-14 14:34 forecle
人家只给你个示例,具体的你自已去写啊,想得到直接就能用的,你也真够脸皮厚的!没本事!  回复  更多评论
  

# re: 用java压缩文件夹/文件[未登录] 2013-05-10 23:49
没有注释,苦逼啊。。。  回复  更多评论
  

# 回复@ne_akari 2013-07-04 21:15 asd
@ne_akari
你就是个纯傻 逼 还喷别人。。要别人写好再放出来
你自己看仔细了再说人家  回复  更多评论
  

# re: 用java压缩文件夹/文件[未登录] 2013-07-23 09:20 张三
@tye
http://wlh.iteye.com/blog/134451

这个链接里面的不会乱码  回复  更多评论
  

# 写的真不错 2013-07-25 17:50 沈坤林
写的真不错,代码拿出来就能执行,感谢感谢啊!  回复  更多评论
  

# re: 用java压缩文件夹/文件 2014-04-22 15:35 路人
@ne_akari
你个二逼,自己好好看看再说
  回复  更多评论
  

# re: 用java压缩文件夹/文件 2014-05-08 21:24 路人
压缩文件夹时,有问题吧,会多出一个文件夹来。  回复  更多评论
  

# re: 用java压缩文件夹/文件 2015-03-28 16:57 XURUIYANG
YASUO  回复  更多评论
  


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


网站导航: