288 votes

Décompressez les fichiers par programmation dans .net

Je suis en train d'en programmant décompresser un fichier zippé.

J'ai essayé d'utiliser l' System.IO.Compression.GZipStream classe .NET, mais quand mon application s'exécute (en fait une unité de test), j'ai cette exception:

Système.IO.InvalidDataException: Le nombre magique dans GZip-tête n'est pas correcte. Assurez-vous que vous êtes de passage dans un GZip ruisseau..

Je me rends compte maintenant qu'un .zip le fichier n'est pas la même chose qu'un .gz le fichier, et qu' GZip n'est pas le même que Zip.

Cependant, depuis que je suis en mesure d'extraire le fichier manuellement en double-cliquant sur le fichier compressé, puis en cliquant sur "Extraire tous les fichiers"bouton, je pense qu'il devrait y avoir un moyen de le faire dans le code.

Donc j'ai essayé d'utiliser Process.Start() avec le chemin vers le fichier compressé à l'entrée. Cela provoque mon application pour ouvrir une Fenêtre affichant le contenu dans le fichier zippé. C'est tout beau, mais l'application sera installée sur un serveur avec personne autour de cliquer sur "Extraire tous les fichiers"bouton.

Alors, comment puis-je obtenir mon application pour extraire les fichiers dans les fichiers zippés?

Ou est-il un autre moyen de le faire? Je préfère le faire dans le code, sans avoir à télécharger de bibliothèques tierces ou d'applications; le département de la sécurité n'est pas trop de fantaisie à ce sujet...

590voto

bsara Points 1696

Avec .NET 4.5 , vous pouvez maintenant décompresser les fichiers à l’aide de .NET framework :

Le code ci-dessus a été pris directement de la documentation de Microsoft : http://msdn.microsoft.com/en-us/library/ms404280(v=vs.110).aspx

est contenue dans l’assembly . (Merci nateirvin... Voir commentaire ci-dessous)

67voto

Chris Conway Points 6678

Nous avons utilisé SharpZipLib avec succès sur de nombreux projets. Je sais que c’est un outil tiers, mais le code source est inclus et peut se faire une idée si vous avez choisi de réinventer la roue ici.

60voto

Lukas Points 622

Fichiers DLL gratuits et non externes. Tout est en un seul fichier CS. Un seul téléchargement est simplement le fichier CS, un autre téléchargement est un très facile à comprendre l’exemple. Juste essayé aujourd'hui et je ne peux pas croire comment simple l’installation a été. Il a travaillé sur le premier essai, pas d’erreurs, pas rien.

http://zipstorer.codeplex.com/

28voto

Dan-o Points 12949

Utilisez la bibliothèque de DotNetZip à http://www.codeplex.com/DotNetZip

2voto

Kenneth Cochran Points 7262

Standard des fichiers zip normalement utiliser l'algorithme deflate.

Pour extraire des fichiers sans utiliser des bibliothèques tierces utilisation DeflateStream. Vous aurez besoin d'un peu plus d'informations sur le fichier zip format d'archive que Microsoft ne fournit l'algorithme de compression.

Vous pouvez aussi essayer d'utiliser zipfldr.dll. C'est Microsoft bibliothèque de compression (dossiers compressés à partir du menu Envoyer vers). Il semble être une bibliothèque com mais c'est sans-papiers. Vous pourriez être en mesure de le faire fonctionner pour vous par le biais de l'expérimentation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X