一、使用ant解压缩文件

之前介绍过使用Java自带机制进行文件解压缩,即使用java.util.zip里的ZipFile类和ZipOutputStream类,这种方法的好处是可以在处理文件过程中记录一些信息,例如使用ProgressBar,根据已处理的文件个数来显示一个进度条,让人直观的了解到解压缩的进度。今天又接触到了一种新的解压缩文件方法,它的优点是非常简洁,只需要简单的调用ant中的一些接口就行了。首先,需要导入下面几个类

import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;

然后就可以用下面的代码来进行解压缩操作,解压文件代码如下:

private void unzipFile(File srcFile, File destFolder)
throws Exception {
Project prj
= new Project();
Expand expand
= new Expand();
expand.setProject(prj);
expand.setSrc(srcFile);
expand.setOverwrite(
true);
expand.setDest(destFolder);
expand.execute();
}

 压缩文件的代码如下:

private void zipFile(File srcFolder, File destFile) throws Exception {
Project prj
= new Project();
Zip zip
= new Zip();
zip.setProject(prj);
zip.setDestFile(destFile);
FileSet fileSet
= new FileSet();
fileSet.setProject(prj);
fileSet.setDir(srcFolder);
fileSet.setIncludes(
"**/*");
zip.addFileset(fileSet);
zip.execute();
}

至于两种方法的效率,应该是差不多的。

二、进度条

使用进度条给人一种直观了解当前进度的方法是非常好的,通过SWT的ProgressBar类来实现,新建之后,可以设置进度条是水平还是竖直,是稳定增长还是不断盘旋。如果是稳定增长的话,就可以通过progressBar.setSelection()方法控制进度显示,进度=100% * (Selection-Min)/(Max-Min)。

三、目录选择

1、使用JFileChooser,通过setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY)可以让它变成一个可以选择目录的对话框,是比较灵活的,可是外观上是Swing风格,不是很好看,需要通过设置风格来解决;

2、使用SWT自带的DirectoryDialog,如下所示:

DirectoryDialog dirDialog = new DirectoryDialog(thisParent.getShell(), SWT.OPEN);
dirDialog.setMessage(
"选择应用所在目录");
dirDialog.setText(
"选择目录");
dirDialog.setFilterPath(
"C:\\");