我制作了一个程序让用户选择一个文件,然后让用户创建一个新的zip文件。然后程序将所选文件写入zip文件中。但我不知道如何设置JProgressBar来告诉用户进度。但我不知道如何取得进展。请给我代码以获取进度,以便我可以在进度条中显示它。
答案 0 :(得分:1)
一种方法是确定文件的大小,将其划分为n
块,然后使用ZipOutputStream.write(byte[] b, int off, int len)
方法编写每个块,在每次写入操作后更新进度条。 />
编辑示例代码
public static String zipFile(String fileName) throws Exception {
File file = new File(fileName);
File zipfile = new File(fileName+".zip");
FileInputStream fis = new FileInputStream(file);
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipfile)) ;
int length = (int)file.length() ;
byte[] data = new byte[length];
fis.read(data);
fis.close();
zos.putNextEntry(new ZipEntry(file.getName()));
int iterations = 10 ;
for (int i = 0 ; i < iterations-1 ; i ++) {
zos.write(data, i*(length/iterations), (length/iterations));
System.out.format("%d%%\n", (i+1)*10 ) ;
}
zos.write(data, (iterations-1)*(length/iterations), length - (iterations-1)*(length/iterations));
System.out.format("100%%\n") ;
zos.closeEntry();
zos.close();
return zipfile.getName() ;
}