IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Dotnet Discussion :

Compresser un dossier


Sujet :

Dotnet

  1. #1
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Compresser un dossier
    Bonjour
    La roume je revient vers vous pour une aide, je seche grave sur cette partie, j'ai parcouru un tas de forum mais aucune solution.
    au fait j'ai un dossier " D:\bin\OLS " que je souhaite tout simplement compresser en format zip
    une ame charitable ?? merci @ vous

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    as-tu regardé du côté de la méthode ZipFile.CreateFromDirectory (namespace System.IO.Compression) ?
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut
    Bonjour
    Merci pour le lien, sauf que cette méthode n''est disponible qu'a partir du framework 4.5 hors pour des raison strictement propre à l'entreprise et aux différents environnements, le framework est le 3.5.
    donc ça convient pas au projet.
    merci

  4. #4
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Salut

    SharpZipLib répondra parfaitement à tes besoins . C'est une bibliothèque éprouvée et reconnue. Pour ma part, je l'utilise en prod depuis des années (et toute la palette : zip, tar, gz, etc.)

    La documentation pour manipuler des zip se trouve ici.

  5. #5
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Arf, du coup va falloir trouver une lib tiers.
    Avec une recherche rapide je suis tombé sur celle-ci : DotNetZip
    A voir si elle te convient, sinon google devrait pouvoir t'en proposer d'autres avec la bonne recherche.
    Plus je connais de langages, plus j'aime le C.

  6. #6
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut Merci Max
    Merci MAx pour ton retour
    Je suis new sur le vb.net et du coup l'utilisation de ces bibliothèque sont limites, en premier je doit rajouter la bibliothèque à la racine de mon projet ?
    merci du soutien

  7. #7
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par souhail72 Voir le message
    Merci MAx pour ton retour
    Je suis new sur le vb.net et du coup l'utilisation de ces bibliothèque sont limites, en premier je doit rajouter la bibliothèque à la racine de mon projet ?
    merci du soutien
    Tu ajoutes la dll où tu veux dans ton projet et après tu l'ajoutes comme référence

  8. #8
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut ok
    Oui ca je sais le faire par contre je n'ai pas trouvé de Dll sur le projet que j'ai téléchargé ?
    merci

  9. #9
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par souhail72 Voir le message
    Oui ca je sais le faire par contre je n'ai pas trouvé de Dll sur le projet que j'ai téléchargé ?
    merci
    Tu as dû te tromper dans ton téléchargement alors, parce qu'il y a bien une DLL si tu prends ça :

    Nom : PrtScr capture_4.jpg
Affichages : 274
Taille : 14,3 Ko

  10. #10
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut
    J'ai pu trouver la dll correspondante au framework 3.5 et je l'ai référencé sauf que ..?

    quand j'appel la fonction compressefolder elle a besoin de 3 paramètres que je passe sauf 1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'path As String, zipStream As ZipOutputStream, folderOffset As Integer
        CompressFolder(startPath, "", zipPath)

    le startPath est une chaine ainsi que le zipPath , par contre le Zipstream j'arrive pas à le passer ?

    merci @ vous

  11. #11
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Je parle pas le VB.NET mais si tu suis leur exemple, au préalable tu dois juste créer un Stream qui correspond à ton futur ZIP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    Imports System
    Imports System.IO
    Imports ICSharpCode.SharpZipLib.Core
    Imports ICSharpCode.SharpZipLib.Zip
     
    ' Compresses the files in the nominated folder, and creates a zip file on disk named as outPathname.
    '
    Public Sub CreateSample(outPathname As String, password As String, folderName As String)
     
        Dim fsOut As FileStream = File.Create(outPathname)
        Dim zipStream As New ZipOutputStream(fsOut)
     
        zipStream.SetLevel(3)       '0-9, 9 being the highest level of compression
        zipStream.Password = password   ' optional. Null is the same as not setting.
     
        ' This setting will strip the leading part of the folder path in the entries, to
        ' make the entries relative to the starting folder.
        ' To include the full path for each entry up to the drive root, assign folderOffset = 0.
        Dim folderOffset As Integer = folderName.Length + (If(folderName.EndsWith("\"), 0, 1))
     
        CompressFolder(folderName, zipStream, folderOffset)
     
        zipStream.IsStreamOwner = True
        ' Makes the Close also Close the underlying stream
        zipStream.Close()
    End Sub
     
    ' Recurses down the folder structure
    '
    Private Sub CompressFolder(path As String, zipStream As ZipOutputStream, folderOffset As Integer)
     
        Dim files As String() = Directory.GetFiles(path)
     
        For Each filename As String In files
     
            Dim fi As New FileInfo(filename)
     
            Dim entryName As String = filename.Substring(folderOffset)  ' Makes the name in zip based on the folder
            entryName = ZipEntry.CleanName(entryName)       ' Removes drive from name and fixes slash direction
            Dim newEntry As New ZipEntry(entryName)
            newEntry.DateTime = fi.LastWriteTime            ' Note the zip format stores 2 second granularity
     
            ' Specifying the AESKeySize triggers AES encryption. Allowable values are 0 (off), 128 or 256.
            '   newEntry.AESKeySize = 256;
     
            ' To permit the zip to be unpacked by built-in extractor in WinXP and Server2003, WinZip 8, Java, and other older code,
            ' you need to do one of the following: Specify UseZip64.Off, or set the Size.
            ' If the file may be bigger than 4GB, or you do not need WinXP built-in compatibility, you do not need either,
            ' but the zip will be in Zip64 format which not all utilities can understand.
            '   zipStream.UseZip64 = UseZip64.Off;
            newEntry.Size = fi.Length
     
            zipStream.PutNextEntry(newEntry)
     
            ' Zip the file in buffered chunks
            ' the "using" will close the stream even if an exception occurs
            Dim buffer As Byte() = New Byte(4095) {}
            Using streamReader As FileStream = File.OpenRead(filename)
                StreamUtils.Copy(streamReader, zipStream, buffer)
            End Using
            zipStream.CloseEntry()
        Next
        Dim folders As String() = Directory.GetDirectories(path)
        For Each folder As String In folders
            CompressFolder(folder, zipStream, folderOffset)
        Next
    End Sub

  12. #12
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut
    Ok merci max, j'essaye de me dépatouiller avec tout cela. merci pour le soutien

  13. #13
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut
    Je reviens vers vous ...
    J'ai pu appeler la Dll, là j'ai une erreur de type " Access to the path 'D:\bin\OLS' is denied."
    Avez vous une idée?
    Merci

  14. #14
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut
    Je reviens vers vous pour une autre erreur, il me dit que les ressources d'un dossier sont utilisé ailleur, meme avec un dispose, cela ne marche pas !
    ci joint une capture d'écran
    Images attachées Images attachées  

  15. #15
    Membre du Club
    Homme Profil pro
    PartNumber
    Inscrit en
    Octobre 2012
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : PartNumber
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 309
    Points : 65
    Points
    65
    Par défaut
    Problème résolu Merci de votre soutien

  16. #16
    Max
    Max est déconnecté
    Expert éminent sénior

    Avatar de Max
    Homme Profil pro
    Artisan développeur
    Inscrit en
    Mai 2007
    Messages
    2 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Artisan développeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 2 954
    Points : 14 933
    Points
    14 933
    Par défaut
    Citation Envoyé par souhail72 Voir le message
    Problème résolu Merci de votre soutien
    Coucou.

    N'hésite pas à poster la solution à ton problème, cela pourrait être utile à quelqu'un dans le futur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant][C#] Compression de dossier de manière récurssive
    Par LordProgz dans le forum Windows Forms
    Réponses: 10
    Dernier message: 12/01/2010, 13h55
  2. Compression de dossiers avec Abbrevia
    Par Badrouta dans le forum Delphi
    Réponses: 4
    Dernier message: 27/01/2007, 08h45
  3. [Windows] Compresser un dossier en .tgz
    Par Nicotendo dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 18/12/2006, 13h15
  4. Compresser un dossier avec Compress::Zlib
    Par mobscene dans le forum Modules
    Réponses: 1
    Dernier message: 17/11/2006, 21h13
  5. compresser un dossier
    Par kevain_09 dans le forum VBScript
    Réponses: 3
    Dernier message: 07/09/2006, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo