动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   网页设计 → 阅读文章

 Java咖啡馆——一个压缩归档实用软件(4)

作者:风未起时 来源:中国站长学院 
阅读 数 126 人次 , 2006-2-15 14:35:00 

Java文件操作(3)

    

  6.ZIP压缩和CRC校验

  良好的开端是成功的一半,有了上面的准备,完成主程序也就很容易了。

public static void main(String[] args) {
   // 程序出现任何异常都将打印使用信息。
   try {
      // 记录正则表达式和路径名称。
      String regex = args[1];
      String targetFolder = args[0];

      File path = new File(targetFolder);
      ArrayList files = new ArrayList();

      // 递归搜索path所指定的文件夹内以及子文件夹内满足合正则表达式。
      recursiveAppend(path, files, regex);

     if (files.size() == 0) {
     System.out.println("找不到任何匹配的文件!");
        return;
     }

     // 把符合正则表达式的文件压缩成ZIP格式并且返回CRC校验值。
     FileOutputStream file = new FileOutputStream("Backup.zip");
     CheckedOutputStream csum = new CheckedOutputStream(file, new CRC32());
     ZipOutputStream zos = new ZipOutputStream(csum);
     BufferedOutputStream out = new BufferedOutputStream(zos);

     // 为ZIP包添加注释。
     zos.setComment("Backup " + regex + " in " + targetFolder);

     // 开始压缩。
     for (int i = 0; i < files.size(); i++) {
       String currentFile = (String) files.get(i);
       System.out.println("Writing file " + currentFile);
       BufferedReader in = new BufferedReader(new FileReader(currentFile));
       zos.putNextEntry(new ZipEntry(currentFile));
       int c;
       while ((c = in.read()) != -1)
          out.write(c);
       in.close();
       }
       out.close();

       // 当压缩包关闭以后便可以得到CRC校验值。
       System.out.println("CRC校验值:" + csum.getChecksum().getValue());
     } catch (Exception e) {
       printUsage();
     }
}

  首先可以看到,整个main函数部分是用一个大的try...catch异常捕获语句容纳起来的,当程序出现任何异常时,我们都认为是用户的参数不正确,便调用printUsage()方法打印使用信息,具体代码从略。

  首先通过recursiveAppend()方法递归搜索指定的文件夹内以及子文件夹内满足合正则表达式的文件名,结果将保存在files中。如果有满足条件的文件,则把这些文件压缩成ZIP格式,并添加适当的注释。当压缩包关闭以后便可以得到ZIP包的CRC校验值。

  注意,以上这些代码使用的都是Java API内置的功能,如果你在编写的过程中遇到找不到类定义的情况,别忘记使用Eclipse内置的Ctrl+Shift+M自动导入功能。
至此,整个软件全部编写好了。你可以在命令行手动输入把玩一下,或者点击Run菜单的Run...菜单项,配置Eclipse运行的参数如图2所示。


 

  
 本文Tags压缩  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:Java咖啡馆——一个压缩归档实用软件(3)
· 下一篇:Java FAQ(1)
· Javascript实例教程(8)
· Xhtml第5天:head区的其他设置
· 页面控制常见问题及解决办法
· 用JavaScript实现利用FLASH嵌入声音(三)
· 使用DIV之后,什么时候使用TABLE?


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077