none
créer un fichier Zip sous VB 2008 Express RRS feed

  • Question

  • bonjour,
    etant a la recherche d4un code pour zipper des fichier texte je suis tomber sur ce code
    il fonctionne très bien sous VB express par contre il ne fonctionne pas sous VB express
    Or il me faut faire mon develloppement sous VB2008
    En fait tout se deroule bien jusqu'au moment ou j'arrive a la ligne Infile.CopyTo(Compress)
    Et la CopyTo n'appartient pas a Infile

    Ma question est donc (Je viens de me mettre a VB2008 et donc je suis loin de maitrise) Comment faire pour pouvoir ecrire le zipstream dnas le fichier.
    dans l'exemple fournit par Microsoft tout est effectuer en mémoire et pas de création de fichier
    Si quelqu'un pouvait eclairer ma lanterne et m'expliquer comment marche la creation de fichier zip sous vb2008 Express ca serait super sympa.

    Merci par avance

    Fanchy

    PS Voici le bout de code que j'ai recupéré

     Using Infile As FileStream = Fi.OpenRead()
                If (File.GetAttributes(Fi.FullName) And FileAttributes.Hidden) _
                    <> FileAttributes.Hidden And Fi.Extension <> "*.Zip" Then
                    Using Outfile As FileStream = File.Create(Fi.FullName + ".zip")
                        Using Compress As GZipStream = New GZipStream(Outfile, CompressionMode.Compress)
                            Infile.CopyTo(Compress)
                        End Using
                    End Using
                End If
            End Using


    dimanche 13 février 2011 00:33

Réponses

  • Bonjour,

    Voir "Informations de version" dans la documentation (http://msdn.microsoft.com/fr-fr/library/dd782932.aspx) qui indique que CopyTo n'a été ajouté que dans la version 4 du .NET Framework.

    Donc en 2.0, il faudra l'implémenter soi même. Pour info l'implémentation en 4.0 est grossièrement :

    Private Sub InternalCopyTo(ByVal destination As Stream, ByVal bufferSize As Integer)
     Dim num As Integer
     Dim buffer As Byte() = New Byte(bufferSize - 1) {}
     Do While (num = Me.Read(buffer, 0, buffer.Length) <> 0)
      destination.Write(buffer, 0, num)
     Loop
    End Sub
    
     
    
    

     Le terme "fichier zip" a attiré mon attention quand je validais. Attention, à ma connaissance les "vrais" fichiers ZIP se basent je crois sur cette compression mais contiennent des infos supplémentaires notamment pour pouvoir gérer plusieurs fichiers dans une même archive.

    A ma connaissance cette méthode permettent de créer donc des fichiers "gzip" mais qui ne sont probablement pas reconnaissable par le format "zip" (donc généralement c'est plutôt ce que l'on choisit si le fichier sera également décompressé par une autre appli, si le but est par contre de fournir un fichier décomprimable par un utilisateur on utilisera généralement une des bibliothèques disponibles comme http://dotnetzip.codeplex.com/ pour revenir sur le format "ZIP" habituel).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    dimanche 13 février 2011 10:45
    Modérateur

Toutes les réponses

  • Bonjour,

    Voir "Informations de version" dans la documentation (http://msdn.microsoft.com/fr-fr/library/dd782932.aspx) qui indique que CopyTo n'a été ajouté que dans la version 4 du .NET Framework.

    Donc en 2.0, il faudra l'implémenter soi même. Pour info l'implémentation en 4.0 est grossièrement :

    Private Sub InternalCopyTo(ByVal destination As Stream, ByVal bufferSize As Integer)
     Dim num As Integer
     Dim buffer As Byte() = New Byte(bufferSize - 1) {}
     Do While (num = Me.Read(buffer, 0, buffer.Length) <> 0)
      destination.Write(buffer, 0, num)
     Loop
    End Sub
    
     
    
    

     Le terme "fichier zip" a attiré mon attention quand je validais. Attention, à ma connaissance les "vrais" fichiers ZIP se basent je crois sur cette compression mais contiennent des infos supplémentaires notamment pour pouvoir gérer plusieurs fichiers dans une même archive.

    A ma connaissance cette méthode permettent de créer donc des fichiers "gzip" mais qui ne sont probablement pas reconnaissable par le format "zip" (donc généralement c'est plutôt ce que l'on choisit si le fichier sera également décompressé par une autre appli, si le but est par contre de fournir un fichier décomprimable par un utilisateur on utilisera généralement une des bibliothèques disponibles comme http://dotnetzip.codeplex.com/ pour revenir sur le format "ZIP" habituel).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    dimanche 13 février 2011 10:45
    Modérateur
  •  
    >   Le terme "fichier zip" a attiré mon attention quand je validais.
    > Attention, à ma connaissance les "vrais" fichiers ZIP se basent je crois
    > sur cette compression mais contiennent des infos supplémentaires notamment
    > pour pouvoir gérer plusieurs fichiers dans une même archive.
    >
    > A ma connaissance cette méthode permettent de créer donc des fichiers
    > "gzip" mais qui ne sont probablement pas reconnaissable par le format "zip"
    > (donc généralement c'est plutôt ce que l'on choisit si le fichier sera
    > également décompressé par une autre appli, si le but est par contre de
    > fournir un fichier décomprimable par un utilisateur on utilisera
    > généralement une des bibliothèques disponibles
    > commehttp://dotnetzip.codeplex.com/ pour revenir sur le format "ZIP"
    > habituel).
     
    Bonjour Patrice,
     
    Je crois que System.IO.Packaging peut aussi servir pour faire des
    archives zip complètes.
    Je ne l'ai pas utilisée dans ce contexte précis mais pour modifier des
    fichiers Word docx et Excel xlsx (qui sont des archives zip)
     --
    Fred
    foleide@free.fr
     
    dimanche 13 février 2011 13:32
  • > System.IO.Packaging
     
    PS : à partir du framework 3.0 de mémoire.
     --
    Fred
    foleide@free.fr
     
    dimanche 13 février 2011 13:33
  • Bonjour,

    desole de ne pas avoir repondu plus tot,

    je vous remercie pour les informations concernant les fichiers ZIP, je comprend que les fichiers ZIP creer a partir du framework ne correpondent pas exactement au format des fichiers zip utiliser par winrar par exemple ?

    cordialement

     

    mardi 15 mars 2011 15:34