Blodarn
Messages postés16Date d'inscriptionjeudi 7 octobre 2010StatutMembreDernière intervention25 novembre 2011
-
25 oct. 2011 à 00:49
cs_breton51 -
8 oct. 2012 à 18:15
Bonjour à tous,
Je suis en train de coder un launcher Minecraft pour mon serveur.
Celui-ci doit donc télécharger des fichiers mis en ligne avec dropbox puis les mettre dans le dossier spécifié par mes soins. Pour cela, aucun problème.
J'ai cherché sur google et j'ai trouvé ceci d'intéressant mais apparemment c'est une application, donc je pourrais peut-être mettre le code dans ma Form1 et faire appelle à cette application pour dézipper, non ? Si oui, je vois pas du tout comment faire ?
Set FSO = CreateObject("Scripting.FileSystemObject" )
If FSO.FolderExists(DossierDezip) Then
FSO.DeleteFile DossierDezip & "\*.*", True
FSO.DeleteFolder DossierDezip & "\*.*", True
End If
Set FSO = Nothing
If CreationDossier(DossierDezip) Then
Set oApp = CreateObject("Shell.Application" )
oApp.Namespace(DossierDezip).CopyHere oApp.Namespace(DossierZip).items
Set oApp = Nothing
Application.StatusBar = "Les fichiers Dézippés se trouvent dans : " & DossierDezip
End If
End Sub
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 25 oct. 2011 à 12:49
Bonjour,
Tu as récupéré un code VB6 alors que tu codes en .NET, il faut l'adapter.
Evites d'utiliser FSO, surtout avec .NET, il y a des méthodes intégrées avec le Framework dans la majorité des cas.
Recherches plutôt avec ces termes : "vb.net unzip"
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Private Sub MyExtract
Dim ZipToUnpack As String = "C1P3SML.zip"
Dim UnpackDirectory As String = "Extracted Files"
Using zip1 As ZipFile = ZipFile.Read(ZipToUnpack)
Dim e As ZipEntry
' here, we extract every entry, but we could extract conditionally,
' based on entry name, size, date, checkbox status, etc.
For Each e In zip1
e.Extract(UnpackDirectory, ExtractExistingFileAction.OverwriteSilently)
Next
End Using
End Sub
Si je comprends, ce code utilise DotNetZip qui est un kit de développeur à installer avec VB.Net...
Je comprends de moins en moins... Il faudrait que j'installe ce kit, que je mette ce code dans ma Form1... Mais ou sont enregistrés les fichiers dézippés ?
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 25 oct. 2011 à 20:50
Bonjour,
Il faut que tu fasse une référence vers l'assembly DotNetZip via l'onglet "Références" des propriétés du projet.
Ensuite pour le dossier de destination, je crois qu'il faut regarder du coté de : UnpackDirectory
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Vous n’avez pas trouvé la réponse que vous recherchez ?
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 26 oct. 2011 à 12:47
Bonjour,
- Tu as un bouton "Ajouter", regardes le ...
- Le nom de la variable indique peut être sa fonction
- Il faut enregistrer le fichier sur le disque, je pense, puis le dézziper.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Sub Main()
' Path to directory of files to compress.
Dim dirpath As String = "c:\users\public\reports"
Dim di As DirectoryInfo = New DirectoryInfo(dirpath)
' Compress the directory's files.
For Each fi As FileInfo In di.GetFiles()
Compress(fi)
Next
' Decompress all *.gz files in the directory.
For Each fi As FileInfo In di.GetFiles("*.gz")
Decompress(fi)
Next
End Sub
' Method to compress.
Private Sub Compress(ByVal fi As FileInfo)
' Get the stream of the source file.
Using inFile As FileStream = fi.OpenRead()
' Compressing:
' Prevent compressing hidden and already compressed files.
If (File.GetAttributes(fi.FullName) And FileAttributes.Hidden) _
<> FileAttributes.Hidden And fi.Extension <> ".gz" Then
' Create the compressed file.
Using outFile As FileStream = File.Create(fi.FullName + ".gz")
Using Compress As GZipStream = _
New GZipStream(outFile, CompressionMode.Compress)
' Copy the source file into the compression stream.
inFile.CopyTo(Compress)
Console.WriteLine("Compressed {0} from {1} to {2} bytes.", _
fi.Name, fi.Length.ToString(), outFile.Length.ToString())
End Using
End Using
End If
End Using
End Sub
' Method to decompress.
Private Sub Decompress(ByVal fi As FileInfo)
' Get the stream of the source file.
Using inFile As FileStream = fi.OpenRead()
' Get orignial file extension, for example "doc" from report.doc.gz.
Dim curFile As String = fi.FullName
Dim origName = curFile.Remove(curFile.Length - fi.Extension.Length)
' Create the decompressed file.
Using outFile As FileStream = File.Create(origName)
Using Decompress As GZipStream = New GZipStream(inFile, _
CompressionMode.Decompress)
' Copy the decompression stream
' into the output file.
Decompress.CopyTo(outFile)
Console.WriteLine("Decompressed: {0}", fi.Name)
End Using
End Using
End Using
End Sub
End Module
Pour l'incorporer à mon programme, je le mets au début de mon code et automatiquement, les fichiers .gzip seront décompresser dans le dossier où ils ont été téléchargés ?
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 27 oct. 2011 à 21:47
Bonjour,
Quand tu posts un code, merci de lire le point 2 de ma signature, ce sera plus lisible.
Sans regarder plus que ça, je pense que c'est dans le même dossier que le fichier à compresser.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
Mon site
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 27 oct. 2011 à 22:58
Bonsoir,
@Blodarn, la première méthode est la bonne si tu souhaites dézipper une archive ZIP contenant une arborescence. La seconde solution ne fonctionne que pour les fichier directement compressés et via la méthode GZip, le fichier ne doit pas être une archive.
Une fois que tu as référencé l'assembly à ton projet il ne te reste qu'à saisir le code pour te servir de celle-ci. Voici un lien vers la documentation de la librairie en question.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Blodarn
Messages postés16Date d'inscriptionjeudi 7 octobre 2010StatutMembreDernière intervention25 novembre 2011 27 oct. 2011 à 23:14
Si le fichier est un .rar, la 1er solution va marcher ? Ou si j'ai bien compris, la 1er solution marchera avec les fichiers compressés avec windows (bouton droit > envoyer vers... > dossier compressé) ?
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 27 oct. 2011 à 23:38
Non, le .rar est un format propriétaire de Winrar et qui n'a rien à voir avec le zip. Donc tu peux oublier tes librairie ZIP. Pour le rar, une seule solution: utiliser les librairies de Winrar, tu pourras trouver des sources ici je pense. Mais attention, la librairie n'est pas libre de droit et tu n'auras pas le droit de la distribuer donc ceux qui utiliseront ton programme devront acheter une licence de Winrar ou installer une version démo.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 28 oct. 2011 à 00:15
Heu... Tu sais lors ce que l'on te donne un code il faut en comprendre le sens sinon je ne vois pas l'intérêt...
Le code que tu as copié à une signification particulière, entre autre il faut préciser un chemin de sortie et une archive source, question de logique, un code copié/collé ne peux pas deviner l'emplacement de ton archive ni l'endroit ou tu veux l'extraire.
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 29 sept. 2012 à 13:43
Bonjour,
Blodarn, Essayes d'ouvrir un nouveau sujet pour cela, le tien étant très ancien.
"le programme m'affice une erreur"
Quelle erreur ?
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list ---
Mon site