Signaler la progression de la compression
Gestionnaire d’�v�nements de progression
Le processus de compression peut prendre beaucoup de temps, surtout si la taille des donn�es est �norme. Pour l’archive zip, il existe un �v�nement CompressionProgressed pour rester publi�. Cet �v�nement s’appuie sur ProgressEventArgs qui contient le nombre d’octets trait�s jusqu’� pr�sent. Voici comment nous pouvons nous abonner � cet �v�nement en utilisant lambda extression�:
1 Entry.CompressionProgressed += (s, e) => {
2 Console.WriteLine(string.Format("{0} octets compress�s", e.ProceededBytes));
3 }�;�Rapport du pourcentage de progression Zip�
Chaque fois que l’�v�nement CompressionProgressed se d�clenche, nous divisons le nombre ProceededBytes par la longueur du fichier d’origine. C’est ainsi que nous trouvons le ratio d’octets compress�s pour le moment. Voici l��chantillon complet.
�tapes�: Signaler le pourcentage de progression du zip en C#
- Ouvrez le fichier huge.bin en mode lecture � l’aide de File.Open pour le pr�parer � la compression.
- Initialisez une nouvelle instance de la classe Archive, en sp�cifiant PPMdCompressionSettings pour la compression.
- Cr�ez une entr�e d’archive pour le fichier huge.bin � l’aide de la m�thode CreateEntry, en la liant au flux du fichier source.
- Attachez un gestionnaire d’�v�nements � l’�v�nement CompressionProgressed pour surveiller la progression de la compression. Il calcule le pourcentage du fichier compress� jusqu’� pr�sent.
- Dans le gestionnaire d’�v�nements, mettez � jour le pourcentage de compression et affichez-le dans la console chaque fois que la progression augmente.
- Une fois la compression termin�e, enregistrez l’archive dans le fichier zip sp�cifi�.
1 en utilisant (source FileStream = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
2 {
3 en utilisant (var archive = new Archive (new ArchiveEntrySettings (new PPMdCompressionSettings())))
4 {
5 Entr�e ArchiveEntry = archive.CreateEntry("huge.bin", source);
6 int pourcentagePr�t = 0�;
7 entr�e.CompressionProgressed += (s, e) =>
8 {
9 int percent = (int)((100 * (long)e.ProceededBytes) / source.Length);
10 si (pourcentage > pourcentagePr�t)
11 {
12 Console.WriteLine(string.Format("{0}% compress�", pourcentage));
13 percentReady = pourcentage�;
14 }
15 }�;
16 archive.Save(zipFile);
17 }
18 }�D�claration du pourcentage de progression de 7�z�
Une approche similaire concerne les archives 7z. Son entr�e poss�de son propre �v�nement CompressionProgressed
- Ouvrez le fichier source (huge.bin) en mode lecture.
- Cr�ez un objet SevenZipArchive � l’aide des param�tres de compression LZMA2.
- Ajoutez le fichier source � l’archive en tant qu’entr�e � l’aide de la m�thode CreateEntry.
- Abonnez-vous � l’�v�nement CompressionProgressed pour suivre et calculer la progression de la compression.
- Pour chaque mise � jour de progression, calculez le pourcentage de compression termin�.
- Enregistrez l’archive dans la destination sp�cifi�e (zipFile).
1en utilisant (source FileStream = File.Open("huge.bin", FileMode.Open, FileAccess.Read))
2 {
3 en utilisant (var archive = new SevenZipArchive(new SevenZipEntrySettings(new SevenZipLZMA2CompressionSettings())))
4 {
5 Entr�e SevenZipArchiveEntry = archive.CreateEntry("huge.bin", source);
6 int pourcentagePr�t = 0�;
7 Entry.CompressionProgressed += d�l�gu� (object s, ProgressEventArgs e)
8 {
9 // s est SevenZipArchiveEntry
10 int percent = (int)((100 * (long)e.ProceededBytes) / source.Length);
11 si (pourcentage > pourcentagePr�t)
12 {
13 percentReady = pourcentage�;
14 }
15 }�;
16 archive.Save(zipFile);
17 }
18 }