La réponse à la question suivante semble expliquer comment extraire des fichiers à l’aide de l’appel de méthode System.IO.Commpression.ZipFile.ExtractToDirectory. “ZipFile” ne semble pas exister dans .NET 4.5, lors de l’ajout d’une référence à System.IO.Compression. Comment puis-je extraire des fichiers d’un fichier * .zip dans .NET 4.5?
Comment décompresser tous les fichiers .Zip d’un dossier en utilisant C # 4.0 sans utiliser de DLL OpenSource?
Cela semble montrer comment compresser des fichiers. Mais je cherche l’inverse.
Compression de fichiers dans .NET 4.5
Même cette question fait référence à “ZipFile” dans le code source. Mais je n’arrive pas à trouver cette classe.
Comment extraire uniquement le répertoire spécifique d’une archive zip dans C # .NET 4.5?
Remarquez comment 7z.exe (du paquet 7zip) n’a pas fonctionné. Il doit y avoir un conflit avec .NET et 7zip. ZipFile semble maintenant fonctionner correctement.
private void extract_Click(object sender, EventArgs e) { ssortingng exePath = System.Reflection.Assembly.GetExecutingAssembly().Location; exePath = @"C:\test"; // path during troubleshooting ////var cmd1 = "cd \"" + exePath + "\""; ////ExecuteCommand(cmd1, 100, exePath); //var cmd2 = "\"" + exePath + "\\7z.exe\" x \"" + exePath + "\\source.zip\""; //ExecuteCommand(cmd2, 100, exePath); ssortingng zipPath = exePath + "\\source.zip"; ssortingng extractPath = exePath; // needed explicit reference to System.IO.Compression.FileSystem ZipFile.ExtractToDirectory(zipPath, extractPath); } private static int ExecuteCommand(ssortingng command, int timeout, ssortingng dir) { var processInfo = new ProcessStartInfo("cmd.exe", " /C " + command) { CreateNoWindow = true, UseShellExecute = false, WorkingDirectory = dir, }; var process = Process.Start(processInfo); process.WaitForExit(timeout); var exitCode = process.ExitCode; process.Close(); return exitCode; }
Vous devrez append une référence à l’assembly System.IO.Compression.FileSystem
.
Chaque classe de bibliothèque a une page MSDN. C’est celui de ZipFile .
Notez la spécification de l’espace de noms et de l’assembly dans la section supérieure.