一、使用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:\\");
浙公网安备 33010602011771号