begin process at 2010 02 10 03:41:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > COMPRESSION / DECOMPRESSION A PARTIR DU SDK LZMA DE 7ZIP ( MULTI FICHIER )

COMPRESSION / DECOMPRESSION A PARTIR DU SDK LZMA DE 7ZIP ( MULTI FICHIER )


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Source .NET ( DotNet ) Classé sous :lzma, compression, decompression Niveau :Initié Date de création :22/08/2007 Date de mise à jour :28/08/2007 13:17:40 Vu / téléchargé :7 997 / 450

Auteur : Vince_02

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

Comme le dit le titre, cette librairie / class, je ne sais pas comment vous appelez ça ( ça ne fait pas longtemps que je fais du C# faut dire ... )
permet tout simplement de compresser/décompresser plusieurs fichier en utilisant l'algorithme LZMA.
Fichier, dossier, date de création, date de modification sont conservé, ainsi que le CRC32 qui est vérifié lors de la décompression.

Bon, il est vrai que ça fait doublon a 7Zip, zip, winrar et autre librairie 'SharpZipLib' en l'occurence que je n'aime pas trop ...
enfin, c'est toujours intéressant de voir comment ça marche, même si ce n'est pas parfait.

Cette librairie comporte 3 fonctions utile, la première =>

- LzmaArchive : Permet l'ouverture, création de l'archive, ajout de fichier/dossier, extraction en préservant ou non les dossiers, et la suppression.

- LzFileInfo  : Contient toute les informations utile pour l'ajout, extraction et suppression d'un fichier compressé.

- LzFileInfoCollection : Contient quand a lui tout les LzFileInfo de l'archive qui mis a jour après chaque ajout/suppression (logique).

Pour voir un peux comment fonctionne cette librairie, j'ai ajouté un petit Forms qui va bien, très simple a utiliser et regroupe les principale fonctions.

Voilà, voilà, dite moi ce que vous en pensez, si vous avez des idées ou autre, n'hésitez pas non plus ^^

Source

  • Tout est dans le zip, j'y ait aussi inclus le SDK LZMA, la librairie en dépend et ne fonctionnera pas sans.
Tout est dans le zip, j'y ait aussi inclus le SDK LZMA, la librairie en dépend et ne fonctionnera pas sans.

 Conclusion

Point positif :
- Compressions / Décompressions de fichiers en mémoire ( Image, Icon, objet sérialisé etc ... ça aide )
- Fonction de backup ( créé une copie de l'archive )
- Suppression de fichier sans devoir recréer une nouvelle archive.
- Décompression rapide.
- Compresse mieux qu'un zip ou un rar ( 7zip aussi mais c'est rare ^^' )

Point négatif :
- Compression plus ou moin lente dans certain cas.
- Aucun fichier journal en cas d'erreur.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

22 août 2007 20:24:08 :
Petite correction sur la présentation du code
28 août 2007 13:17:40 :
L'archive n'est plus corrompue lors d'une exception, ou d'un plantage quelconque. La liste des fichiers n'est plus sérialisé en fin d'archive ( grosse bétise de ma part ). Chaque informations de fichier sont stocké sur l'archive en allant. Shématiquement ça donne : [Info_Fichier_1][Fichier_Compressé_1][Info_Fichier_2][Fichier_Compressé_2] etc ... Ajout du CRC + vérif après extraction du CRC de chaque fichier ( Source de li9 ). Suppression de fonction et variable inutile + ajout de commentaire.

 Sources du même auteur

Source .NET (Dotnet) CALCUL DU CRC32 A TRAVERS UN SYSTEM.IO.STREAM

 Sources de la même categorie

Source avec Zip PILOTER WORD VIA MICROSOFT.OFFICE.INTEROP.WORD par whismeril
Source avec Zip PILOTER EXCEL VIA MICROSOFT.OFFICE.INTEROP.EXCEL par whismeril
Source avec Zip Source .NET (Dotnet) CHECK IDENTICAL FILES par eldim
Source avec Zip Source avec une capture Source .NET (Dotnet) RICHTEXTBOX NUMÉROTÉ (NUMÉROS DE LIGNES) par jray
Source avec Zip Source avec une capture SURVEILLER FICHIERS CRÉÉS AVEC FILESYSTEMWATCHER AMÉLIORÉ par TheOnlyMaX

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) COMPRESSION GZIP AVEC RÉCUPERATION DU NOM DE FICHIER par Nicodelphi
Source avec Zip Source avec une capture Source .NET (Dotnet) COMPRESSION, CONVERSION, ROTATION D'IMAGES par gplog
Source avec Zip Source avec une capture Source .NET (Dotnet) AUTORESIZE V1.0. COMPRESSION D'IMAGES (BCP DE FORMATS) EN JP... par Overkill06
Source avec Zip Source .NET (Dotnet) COMPRESSION GZ AVEC LE FRAMEWORK 2 par keikun59
Source avec Zip Source avec une capture Source .NET (Dotnet) DÉVELOPPEMENT D'UN CODEC DE COMPRESSION/DÉCOMPRESSION D'IMAG... par cobra84

Commentaires et avis

Commentaire de JossGP le 29/09/2007 00:03:59

hi , sorry, but I speek a bad france even tough I read it.

Thank for your classes about LZMA. I was just looking for it.

I downloaded the zip and I tryed in my sharpdevelop environment , without modification, just to understand the logic of all pieces.( classes)
It compile fine , but when I launch the program and select a file I got an error:   Exception o type 'system.OutOfMemoryException' was thrown.

What's wrong? I noted in debug mode than this appens at these line:

  if (openFile.ShowDialog() == DialogResult.OK)
     {
       if (File.Exists(openFile.FileName))
          {  
           try
              { lzArchive.Open(openFile.FileName);
              }
           catch (Exception ex)
              {
                MessageBox.Show(ex.Message, "Erreur !", MessageBoxButtons.OK,   MessageBoxIcon.Error);
               }

Have you any suggestion about it?.
Thank for your help.
Giorgio

Commentaire de JossGP le 29/09/2007 13:43:39

Hi,
After some investigation, I noted that the problem maybe in this statement:

LzmaArchive lzArchive = new LzmaArchive() in lzmaForms.cs

After this statement i tested the lzArchive.ArchiveInitialized flag and it is false. This means that the lzArchive object has not been created.
How to resolve the problem ?

Do I have to use the lzma#.dll and the libCompress.dll in place of the entires projects ? or what ever else?

Thank for your help

Giorgio

Commentaire de JossGP le 30/09/2007 00:20:28

Hi, after several hours , it seems I have found some problems. I want to post here if someone has the same problems I had.

1. in some circumstances this function crash.
   private void WriteLeInt16(Int16 value)
   {
     //archiveStream.WriteByte((byte)(value); --->>> crash
     archiveStream.WriteByte((byte)(value & 0xFF)); --->>> Ok!
     archiveStream.WriteByte((byte)(value >> 8));
   }
2. When you calculate the CRC and call this function:

    private void WriteCompressedSizeAndCrc(long compressedSize, uint crc32)

I don't do ...
          //WriteLeInt32((Int32)crc32); -->> this truncate the value with wrong value
I create a new function
          WriteLeUInt32(crc32);
  private void WriteLeUInt32(uint value)
  {
   uint ch;
       for (int i = 0; i < 4; i++) {
             ch = value >> (8 * i) ;
            archiveStream.WriteByte((byte)(ch & 0xFF));
       }
  }
after these little modification the class is starting to take place and I see some results. Now I go on , if I found something else I post here for other people.

Thank.
Giorgio

Commentaire de Vince_02 le 14/10/2007 13:37:23

OK, je suis comme toi, je sais lire l'anglais, mais l'écrire, c'est une autre histoire ...

Pour l'erreur "OutOfRangeMemory" je pense que c'est du à la class "SevenZip", le taux de compression doit être trop élevé, enfin c'est une supposition et non une certitude.
(Plus le taux est élevé, plus cela prend de mémoire.)

Pour les 2 solutions que tu m'as apporté, je ne comprends pas pourquoi cela ne fonctionne pas pour toi, personnellement je n'ai jamais eu de problème sur ces 2 fonctions. Mais bon, j'en tiens compte pour la prochaine mise à jour.

Sur la prochaine Mise à jour, j'ai ajouté pas mal de fonction utils comme créé un SFX, un système de "Journal d'erreur" et quelque correction, ceux que tu as apporté seront inclus.
par contre je ne saurais te dire quand, actuellement j'ai moin de temps a consacré a tout ça ...

Commentaire de JossGP le 15/10/2007 19:33:25

Hi, Vince_02

Thank you for answer.

I want to inform you about another change i made.
    private UInt32 ReadLeUInt32()
        {
        uint Number;
        uint item;
        Number = ReadLeByte();
        for (int i = 1; i < 4; i++)
            {
                item   = ReadLeByte();
             Number =  (item << 8*i ) | Number ;
            }
            return Number;
        }
This was necessary to read correctly a UINT number without truncation.
After that all take place in the right way.

I found very interesting your idea to add an error journal ,because it can help us to check if everything is went ok. Please inform me when you have news bout it.

Giorgio


Commentaire de JossGP le 15/10/2007 19:39:42

Hi, Vince_02

Thank you for answer.

I want to inform you about another change i made.
    private UInt32 ReadLeUInt32()
        {
        uint Number;
        uint item;
        Number = ReadLeByte();
        for (int i = 1; i < 4; i++)
            {
                item   = ReadLeByte();
             Number =  (item << 8*i ) | Number ;
            }
            return Number;
        }
This was necessary to read correctly a UINT number without truncation.
After that all take place in the right way.

I found very interesting your idea to add an error journal ,because it can help us to check if everything is went ok. Please inform me when you have news bout it.

Giorgio


Commentaire de Roulito le 04/05/2008 15:15:29

Bonjour.

J'ai repris dans VS 2005 ton projet.
La compilation se passe normalement.
J'ai tenté de créer une archive (avec le projet de demo) et même s'il n'y a pas d'erreur, le logiciel 7-Zip ne peut pas lire cette archive. Est-ce normal ?
Comment peut-on corriger cela ?
Seul le programme que tu as fait permet de relire correctement cette archive.

Roulito

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

compression de fichier [ par eryk17 ] bjrje cherche un script qui me permettrait de compresser un fichiermerci Web Service - Compression XML [ par zerpoi ] Le XML c'est bien. Mais un peu lourd pour le réseau ...Je sais qu'il existe un moyen de placer un filtre de compression sur le web service, du style g Faire une zone de texte dynamique [ par typhoonx ] Bonjour,Je suis en train de programmer une application de compression (dll dévelopée en C) et interface C#.Je voudrais faire une zone de texte dans la Probleme de fichier utilisé [ par MorpionMx ] Bonjour, J'ai une appli qui me permet de loader un image dans une PictureBox. Cette image est copiée ensuite dans un Bitmap. Avec une trackBar, j'appl Compression / Décompression Zip avec SharpZipLib ? [ par floorfi ] Bonsoir !Voilà, je voudrais savoir si qq1 avait un tuto (en fr de préférence) ou un source concernant l'utilisation de la lib SharpZipLib pour C#.En f compression/décompression audio [ par naoufal_chatt ] Pour la mise en œuvre d un logiciel en vue d échange de données de type voix sur un réseau je me demande si quelqu un d entre vous a déjà travaillé su Compression [ par Fildomen ] Salutje veux avoir les plus longues chaines qui se répètent,et le reste,comme ca:YaoYaoKiaYaoYaoKiaKia --&gt; YaoYaoKia et Kiaici le Kia dernier et l [C#] Compression d'image [ par bibicool ] Bonjour &#224; tous, Dans mon projet, je dois faire des acquisitions d'image, tout fonctionne nickel, l'acquisition de mon image se passe bien et m compression zip targzip [ par dacor ] bonjour,je voudrais écrire une fonction qui permetrait de comprésser des fichiers en zip targzip.est ce qu'il éxiste une bibliothèque pour écrire ce g Compression.IO [ par DLX973 ] Salut  à tous!Voila j'ai developpez une petite application qui permet de compresser et décompreser des fichiers et des repertoire en m'inspirant des d


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales