Rapport sur l'�tat d'avancement de la compression

Manipulateur d’�v�nement de progression

Le processus de compression peut prendre beaucoup de temps, surtout si la taille des donn�es est importante. Pour les archives zip, il existe un �v�nement CompressionProgressed ( getCompressionProgressed/ setCompressionProgressed) pour rester inform�. Cet �v�nement s’appuie sur ProgressEventArgs qui contient le nombre d’octets trait�s jusqu’� pr�sent. C’est ainsi que nous pouvons nous abonner � cet �v�nement en utilisant lambda expression :

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

Reporting Zip Progress Percentage (Rapport sur la progression de la compression)

A chaque fois que l’�v�nement CompressionProgressed est d�clench�, nous divisons le nombre ProceededBytes par la longueur du fichier original. Nous obtenons ainsi le ratio d’octets compress�s � ce moment-l�. Voici l’exemple complet.

 1File source = new File("huge.bin") ;
 2try (Archive archive = new Archive()) {
 3    ArchiveEntry entry = archive.createEntry("huge.bin", source) ;
 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(percent + "% compressed") ;
10            percentReady[0] = percent ;
11        }
12    }) ;
13    archive.save("output.zip") ;
14}

Reporting 7z Progress Percentage (Rapport de progression 7z)

Une approche similaire est utilis�e pour l’archive 7z. Son entr�e poss�de ses propres m�thodes pour obtenir et d�finir l’�v�nement ( getCompressionProgressed/ setCompressionProgressed).

 1Fichier source = nouveau fichier ("huge.bin") ;
 2try (SevenZipArchive archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings()))) {
 3    SevenZipArchiveEntry entry = archive.createEntry("huge.bin", source) ;
 4    final int[] percentReady = new int[1] ;
 5    entry.setCompressionProgressed((sender, args) -> {
 6        // l'exp�diteur est SevenZipArchiveEntry
 7        int percent = (int)((100 * (long)args.getProceededBytes()) / source.length()) ;
 8        if (percent > percentReady[0])
 9        {
10            System.out.println(percent + "% compressed") ;
11            percentReady[0] = percent ;
12        }
13    }) ;
14    archive.save("output.zip") ;
15}
Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.