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

1/5/2008来源:Java教程人气:5133

  第四篇:(4)品味第一杯咖啡

  第五篇:(5)java语言基础

  第六篇:(6)编写猜数字游戏

  第七篇:(7)大话面向对象(上)

  第八篇:(8)大话面向对象(下)

  优秀的创意造就实用的工具。借助Java内置强大的API,即使是Java的初学者,只要善于调兵遣将,也能够成为力拔山兮气盖世的霸王!

先睹为快

  在病毒肆虐以及BT下载流行的年代,按时备份是一个好习惯。一般而言,只有满足下列这些蛮横需求的软件,才称得上是一个得心应手的好工具:

  ★需要备份的文件可能分布在硬盘的各个角落;
  ★文件名可能比较复杂,不是用DOS的通配符就能够描述清楚的 ;
  ★按照文件的时间、大小、类型(文件或者目录)、最后修改时间等进行筛选;
  ★能够把这些文件压缩,并添加适当的注释帮助辨认 ;
  ★能够添加校验值以确保复制和网络传输时不出错;
  ★保持备份时的目录结构以便恢复;
  ★最好能够同时在多个平台运行;

  这样的软件存在吗?没错,这就是我们这回咖啡馆的主题,我们将综合运用所学的知识,编写一个这样的实用软件—EXPZip

  首先介绍一下软件的使用方法。由于Java咖啡馆开馆以来才短短几期,还未介绍到GUI(图形用户界面)的设计,所以它仍然是一个命令行工具。举个实际例子,对于Java爱好者而言,自己编写的程序再重要不过了,这是N个小时的心血啊,自然应该经常备份,世界上没有后悔药卖的。打开“命令提示符”窗口,进入项目所在文件夹,输入:

java ExpZip "C:\Documents and Settings\Gary Chan\workspace" "[a-zA-Z_$][\w$]*\.java"

  其中java是Java解释器,ExpZip就是我们将要编写的Java类编译以后的class文件。第一个参数代表目标文件夹,第二个参数代表目标文件文件名的表达式,具体含义请看后文详述。回车以后,Eclipse工作区文件夹中包括所有子文件夹中的所有Java源程序都已经备份到Backup.zip中了。可以用WinRAR打开这个ZIP包。

  可以看到,这个压缩包保留了文件的路径信息,并且还有注释,记载着当时的压缩信息。而且,这是一个Java程序,理论上拿到MacOS上运行都是没有问题的。

  总之,这是一个非常强大的软件,而且,我们已经有足够的知识来编写这个软件了。不再赘述,先新建一个项目。

  注:程序的源代码可以点击这里下载。

Java文件操作

  1.File类

  Java中是通过File类来存取文件和路径的。没错,这是一个非常轻易混淆的名字,你可能认为它仅仅能够处理文件,实际上它既可以代表了一个特定的文件,又可以代表某个文件夹内的文件名列表。假如它是文件,你可以通过length()方法获取它的大小、通过lastModified()方法最后修改时间,等等;假如它代表文件名列表,则可以用list()得到表示文件名列表的字符串数组,或者用listFiles()方法得到表示子文件列表的File数组。总之,在Java中文件夹和文件已经被统一成一个抽象的概念,只要了解它的原理,使用起来将会感到非常方便。

  2.文件过滤

  我们说过,File类的listFiles()方法可以得到表示子文件列表的File数组,假如仅仅想要得到特定的子文件而过滤掉其他的文件,则可以给listFiles()方法加上参数——一个过滤器。