48 votes

recommander une bibliothèque / API pour décompresser un fichier en C #

Ne ressemble à aucune bibliothèque / API intégrée en C # pour décompresser un fichier zip. Je cherche une bibliothèque / API libre (meilleure open source) qui pourrait fonctionner avec .Net 3.5 + VSTS 2008 + C # pour décompresser un fichier zip et extraire tous les fichiers dans un dossier spécifique.

Toute bibliothèque / API ou exemples recommandés?

merci d'avance, George

35voto

Sam Saffron Points 56236

La LGPL

http://www.icsharpcode.net/OpenSource/SharpZipLib/

OU le moins restrictif Ms-PL

http://www.codeplex.com/DotNetZip

Pour compléter cette réponse, le framework .net a ZipPackage et j’ai eu moins de succès avec.

25voto

Simon MᶜKenzie Points 3222

Si vous souhaitez simplement décompresser le contenu d'un fichier dans un dossier et savoir que vous ne l'exécuterez que sous Windows, vous pouvez utiliser l'objet Windows Shell. J'ai utilisé dynamic partir de Framework 4.0 dans cet exemple, mais vous pouvez obtenir les mêmes résultats avec Type.InvokeMember .

 dynamic shellApplication = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));

dynamic compressedFolderContents = shellApplication.NameSpace(sourceFile).Items;
dynamic destinationFolder = shellApplication.NameSpace(destinationPath);

destinationFolder.CopyHere(compressedFolderContents);
 

Vous pouvez utiliser FILEOP_FLAGS pour contrôler le comportement de la méthode CopyHere .

17voto

Cheeso Points 87022

DotNetZip est facile à utiliser. Voici un exemple de décompresser

using (var zip = Ionic.Zip.ZipFile.Read("archive.zip"))
{
   zip.ExtractAll("unpack-directory");
}

Si vous avez des besoins plus complexes, comme vous voulez le prendre et choisir les entrées à extraire, ou si il y a des mots de passe, ou si vous voulez contrôler les chemins d'accès des fichiers extraits, ou etc, etc, etc, il ya beaucoup d'options. Consultez le fichier d'aide pour plus d'exemples.

DotNetZip est gratuit et open source.

10voto

Maxim Zaslavsky Points 6873

Dans le passé, j'ai utilisé DotNetZip (MS-PL), SharpZipLib (GPL), et le 7ZIP SDK pour C# (domaine public). Ils fonctionnent très bien, et sont open source.

Je choisirais DotNetZip dans cette situation, et voici un exemple de code à partir du C# la page d'Exemples:

using (ZipFile zip = ZipFile.Read(ExistingZipFile))
{
  foreach (ZipEntry e in zip)
  {
    e.Extract(TargetDirectory);
  }
}

7voto

Henri Points 4037

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