Progreso de la compresi�n

**Manejador de Eventos de Progreso

El proceso de compresi�n puede llevar mucho tiempo, especialmente si el tama�o de los datos es grande. Para archivos zip, hay un evento CompressionProgressed ( getCompressionProgressed/ setCompressionProgressed) para mantenerse informado. Este evento depende de ProgressEventArgs que contiene el n�mero de bytes procesados hasta el momento. As� es como podemos suscribirnos a este evento usando lambda expression:

1entry.setCompressionProgressed((sender, args) -> {
2    System.out.println(args.getProceededBytes() + " bytes comprimidos");
3});

Informaci�n del porcentaje de progreso de compresi�n

Cada vez que se produce el evento CompressionProgressed dividimos el n�mero ProceededBytes por la longitud del fichero original. As� encontramos el porcentaje de bytes comprimidos en ese momento. Aqu� est� el ejemplo completo.

 1Archivo fuente = nuevo Archivo("enorme.bin");
 2try (Archivo = nuevo Archivo()) {
 3    ArchiveEntry entry = archive.createEntry("enorme.bin", fuente);
 4    final int[] percentReady = new int[1];
 5    entry.setCompressionProgressed((sender, args) -> {
 6        int percent = (int)((100 * (long)args.getProceededBytes()) / source.length());
 7        if (percent > percentReady[0])
 8        {
 9            System.out.println(porcentaje + "% comprimido");
10            percentReady[0] = porcentaje;
11        }
12    });
13    archive.save("salida.zip");
14}

Informar del porcentaje de progreso de 7z

Un enfoque similar es para el archivo 7z. Su entrada tiene m�todos propios para obtener y establecer el evento ( getCompressionProgressed/ setCompressionProgressed)

 1Archivo fuente = new Archivo("enorme.bin");
 2try (SevenZipArchive archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings()))) {
 3    SevenZipArchiveEntry entrada = archive.createEntry("enorme.bin", fuente);
 4    final int[] percentReady = new int[1];
 5    entry.setCompressionProgressed((sender, args) -> {
 6        // sender es SevenZipArchiveEntry
 7        int percent = (int)((100 * (long)args.getProceededBytes()) / source.length());
 8        if (percent > percentReady[0])
 9        {
10            System.out.println(porcentaje + "% comprimido");
11            percentReady[0] = porcentaje;
12        }
13    });
14    archive.save("salida.zip");
15}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.