2009-08-25 4 views
1

J'ai un problème lors de l'ouverture d'un fichier zip. J'utilise ce code pour le fichier zip:Problème lors de l'ouverture d'un fichier zip

public static string Zip_File(string soruce , string target) 
     { 
      try 
      { 
       byte[] bufferWrite;    
       using (FileStream fsSource = new FileStream(soruce, FileMode.Open, FileAccess.Read, FileShare.Read)) 
       { 
        bufferWrite = new byte[fsSource.Length]; 
        fsSource.Read(bufferWrite, 0, bufferWrite.Length); 
        using (FileStream fsDest = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)) 
        { 
         using (GZipStream gzCompressed = new GZipStream(fsDest, CompressionMode.Compress, true)) 
         { 
          gzCompressed.Write(bufferWrite, 0, bufferWrite.Length); 
          bufferWrite = null; 
          fsSource.Close(); 
          gzCompressed.Close(); 
          fsDest.Close(); 
         } 
        } 
       } 
       return "success"; 
      } 
      catch (Exception ex) 
      { 
       return ex.Message; 
      } 
     } 

Quand j'appelle cette fonction je reçois un message « succès », mais je ne peux pas en mesure d'ouvrir le fichier zip.

ZipFiles.Zip_File(@"C:\Documents and Settings\ccspl\Desktop\IntegrityDVR.mdb", @"C:\Documents and Settings\ccspl\Desktop\a.zip") 

Ceci est mon code d'appel de fonction:

le (dossier) compressé est invalide ou corrompu ...> c'est un message d'erreur que je reçois

Répondre

8

GZipStream ne crée pas .zip fichiers. Il crée des fichiers .gz. Si vous devez créer des fichiers .zip, vous devez utiliser quelque chose comme SharpZipLib.

+0

pas Mehrdad ... mon prob pas encore résolu ... c'est de donner la même erreur msg –

+1

RV: Bien sûr ** ne fichiers .ZIP créer pas **. Vous avez besoin d'un programme comme 7-Zip pour ouvrir les fichiers '.gz'. –

+0

Cheeso: J'ai suggéré "Flush" comme un moyen de commencer le dépannage. C'était avant que je comprenne que le PO ne voulait pas du tout Gzip; il veut Zip. –

1

mais, attendez une minute, GZipStream ne crée pas le fichier zip, il crée des fichiers gzip que je sache, Zipping files using GZipStream devrait aider

+0

L'article que vous avez cité sur http://www.geekpedia.com/tutorial190_Zipping-files-using-GZipStream.html est un faux. Il affirme à plusieurs reprises que GZipSream peut être utilisé pour compresser des fichiers ou produire une archive .Zip. Pas vrai. – Cheeso

1

exemple de code pour DotNetZip, une bibliothèque zip open source.

public static string ZipFile(String source, String target) 
{ 
    try 
    { 
     using (ZipFile zip = new ZipFile() 
     { 
      zip.AddFile(source); 
      zip.Save(target); 
     } 
     return "success"; 
    } 
    catch {} 
    return "failure"; 
} 
+0

+1 pour une référence de bibliothèque bonne et très utile, et merci pour la correction –

Questions connexes