我制作了一个程序,让用户选择一个文件,然后要求用户制作一个新的 zip 文件。然后程序将所选文件写入 zip 文件。但我不知道如何设置 JProgressBar 来告诉用户进度。但我不知道如何取得进展。请给我获取进度的代码,以便我可以在进度条中显示它。
最佳答案
一种方法是确定文件的大小,将其分成 n
block ,然后使用 ZipOutputStream.write(byte[] b, int off, int len)
方法写入每个 block ,在每次写入操作后更新进度条。
编辑示例代码
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() ;
}
关于java - 如何在 Zip writer 中使用进度条?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28611104/