J'utilise Ionic.Zip (version Compact Framework) dans mon projet Pocket-PC.
L'extraction de fichiers compressés (à l'aide de Ionic.Zip) fonctionne correctement. Si je mets un mot de passe sur le fichier compressé, il faut le mot de passe avant d'extraire, mais quand j'essaye cette instance, la validation du mot de passe pour l'extraction échoue.Ionic.Zip extraire les fichiers et ignorer le mot de passe
Exemple: ce dossier est sur le point de se compresser.
\MyDevice\My Documents\My Pictures
Ce dossier contient deux fichiers ('Flower.jpg','Waterfall.jpg')
Compresser le fichier en utilisant ce code:
public string Compress(string[] Paths, string SaveFileName, string Password, string CompressionType)
{
try
{
using (ZipFile zip = new ZipFile())
{
if (string.IsNullOrEmpty(Password))
zip.Password = Password;
zip.CompressionLevel = Utility.GetCompressionLevel(CompressionType);
foreach (string item in Paths)
{
if (Utility.IsDirectory(item))
zip.AddDirectory(item);
else if (Utility.IsFile(item))
zip.AddFile(item);
}
if (!SaveFileName.Trim().ToLower().EndsWith(".zip"))
if (SaveFileName.Trim().EndsWith("."))
SaveFileName += "zip";
else
SaveFileName += ".zip";
zip.Save(SaveFileName);
}
return Utility.GetResourceString("ZipSuccess");
}
catch (Exception ex)
{
return ex.Message;
}
}
Code d'extraction:
public string Decompress(string ZipFilePath, string TargetPath, string Password, bool OverwriteExistingFiles)
{
try
{
using (ZipFile decompress = ZipFile.Read(ZipFilePath))
{
if (!string.IsNullOrEmpty(Password))
decompress.Password = Password;
foreach (ZipEntry e in decompress)
{
e.Extract(TargetPath, OverwriteExistingFiles ? ExtractExistingFileAction.OverwriteSilently : ExtractExistingFileAction.DoNotOverwrite);
}
}
return Utility.GetResourceString("ExtractSuccess");
}
catch (Exception ex)
{
return ex.Message;
}
}
Extraire le fichier à cet endroit fonctionne très bien, car il requiert le mot de passe:
\MyDevice\My Documents\Personal
Mais! Lorsque j'extrais le fichier sur le même dossier:
\MyDevice\My Documents\My Pictures
Il extrait les fichiers sans nécessiter le mot de passe.
Je pense que c'est un bug. Que puis-je faire pour cela?
J'espère que quelqu'un pourrait répondre. Merci!
Êtes-vous sûr que les fichiers sont extraits? Vous les extrayez dans le même dossier où vous avez compressé les fichiers. Donc, les fichiers existent déjà dans ce dossier – Jehof
Oui, j'ai également essayé de renommer les fichiers avant de les extraire pour m'assurer que les fichiers sont extraits. J'ai aussi mis le point d'arrêt sur la boucle foreach, pour voir s'il y a des fichiers collectés à extraire. – fiberOptics
Si vous pensez que c'est un bug, vous devriez le signaler ici: http://dotnetzip.codeplex.com/workitem/list/basic –