如何使用Zip编写器的进度条?

时间:2015-02-19 16:08:01

标签: java zip progress-bar jprogressbar

我制作了一个程序让用户选择一个文件,然后让用户创建一个新的zip文件。然后程序将所选文件写入zip文件中。但我不知道如何设置JProgressBar来告诉用户进度。但我不知道如何取得进展。请给我代码以获取进度,以便我可以在进度条中显示它。

1 个答案:

答案 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() ;
}