J'ai un fichier test.Zip
qui contient à l'intérieur d'un dossier avec un tas d'autres fichiers et dossiers.
J'ai trouvé SharpZipLib après avoir constaté que .gz/GzipStream n’était pas la solution, car il s’agissait uniquement de fichiers individuels. Plus important encore, cela revient à utiliser GZipStream , ce qui signifie qu’il créera un FICHIER. Mais j'ai le dossier entier zippé. Comment puis-je décompresser un fichier
Pour une raison quelconque, le exemple unzipping here est configuré pour ignorer les répertoires, je ne suis donc pas tout à fait sûr de savoir comment cela est fait.
En outre, je dois utiliser .NET 2.0 pour accomplir cela.
Je pense que c'est le moyen le plus facile. Fonctionnalité par défaut (veuillez regarder ici pour plus d'informations https://github.com/icsharpcode/SharpZipLib/wiki/FastZip )
il extrait avec des dossiers.
code:
using System;
using ICSharpCode.SharpZipLib.Zip;
var zipFileName = @"T:\Temp\Libs\SharpZipLib_0860_Bin.Zip";
var targetDir = @"T:\Temp\Libs\unpack";
FastZip fastZip = new FastZip();
string fileFilter = null;
// Will always overwrite if target filenames already exist
fastZip.ExtractZip(zipFileName, targetDir, fileFilter);
Ce lien explique exactement ce que vous devez accomplir:
Voici comment je l'ai fait:
public void UnZipp(string srcDirPath, string destDirPath)
{
ZipInputStream zipIn = null;
FileStream streamWriter = null;
try
{
Directory.CreateDirectory(Path.GetDirectoryName(destDirPath));
zipIn = new ZipInputStream(File.OpenRead(srcDirPath));
ZipEntry entry;
while ((entry = zipIn.GetNextEntry()) != null)
{
string dirPath = Path.GetDirectoryName(destDirPath + entry.Name);
if (!Directory.Exists(dirPath))
{
Directory.CreateDirectory(dirPath);
}
if (!entry.IsDirectory)
{
streamWriter = File.Create(destDirPath + entry.Name);
int size = 2048;
byte[] buffer = new byte[size];
while ((size = zipIn.Read(buffer, 0, buffer.Length)) > 0)
{
streamWriter.Write(buffer, 0, size);
}
}
streamWriter.Close();
}
}
catch (System.Threading.ThreadAbortException lException)
{
// do nothing
}
catch (Exception ex)
{
throw (ex);
}
finally
{
if (zipIn != null)
{
zipIn.Close();
}
if (streamWriter != null)
{
streamWriter.Close();
}
}
}
C'est bâclé mais j'espère que ça aide!