med belhassen
j'ai trouvé une source en www.aspfr.com qui permet de décompresser un fichier zip dans un répertoire donné. j'ai traduit le code en c# mais le problème c'est que les fichiers extraites restent en cours d'utilisation par le processus d'extraction. par la suite on ne peut pas les supprimer qu'après un certain moment (1 à 2 mn) comme si je n'ai pas fermé le flus de sortie.
svp examinez mon code et si vous constatez le problème n'hésitez pas à me le dire.
void ExtractArchive(string zipFilename,string extractDir)//la fonction prend en paramètre le chemin du fichier à décompresser
{ //et le répertoire de destination dans lequel on va l'extraire
ZipInputStream zis = null;
FileStream fos = null;
try
{
zis = new ZipInputStream(new FileStream(zipFilename,FileMode.Open,FileAccess.Read));
ZipEntry ze;
Directory.CreateDirectory(extractDir);
while ((ze = zis.GetNextEntry()) != null)
{
if (ze.IsDirectory)
{
Directory.CreateDirectory(extractDir+"\\"+ze.Name);
}
else
{
if (!Directory.Exists(extractDir+"\\"+Path.GetDirectoryName(ze.Name)))
{
Directory.CreateDirectory(extractDir+"\\"+Path.GetDirectoryName(ze.Name));
}
fos = new FileStream(extractDir+"\\"+ze.Name,FileMode.Create,FileAccess.Write);
int count;
byte[] buffer= new byte[4096];
while ((count = zis.Read(buffer,0,2048)) > 0)
fos.Write(buffer,0,count);
}
}
}
finally
{if (zis != null) zis.Close();
if (fos != null ) fos.Close();
}
}