Décompresser archive GZIP (*.tar.gz) : erreur chemin d'accès ?

Résolu
Signaler
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
-
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
-
Bonjour,

J'essai de décompresser un fichier GZIP (extension : *.tar.gz) vers un repertoire temporaire et lors du débogage j'obtiens l'erreur suivante : l'accès au chemin d'accès est refusé ...

PS : Je suis sous Windows Vista Ultimate

Voici mon code :

ExtractGZIPArchive("...fichier.tar.gz", "repertoiretemp")

Voici la procedure de decompression :

Public

Sub ExtractGZipArchive(
ByVal cheminSource
As
String,
ByVal cheminCible
As
String)

Try

Dim bufferLen
As
Integer = 1024

Dim hbread
As
New BinaryReader(File.OpenRead(cheminSource))

Dim gzipper
As GZipStream =
New GZipStream(hbread.BaseStream, CompressionMode.Decompress)

Dim hbwrite
As
New BinaryWriter(File.OpenWrite(cheminCible))

Dim F_array(bufferLen)
As
Byte

Dim readlen
As
Integer

Dim flag
As
Boolean =
True

Doreadlen = gzipper.Read(F_array, 0, F_array.Length)

If readlen > 0
Thenflag =

True

If readlen = (bufferLen + 1)
Then hbwrite.Write(F_array, 0, readlen)
Else hbwrite.Write(F_array, 0, readlen - 1)

Elseflag =

False

End
If

Loop
While (flag)hbwrite.Close()

gzipper.Close()

Catch ex
As Exception

Exit
Try

End
Try

End
Sub

11 réponses

Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
LE reflex, la doc ...

http://msdn2.microsoft.com/en-us/library/system.io.file.openwrite.aspx

on y voit des exemples clairs... on s'assure que le fichier de sortie existe, avant le OpenWrite...
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
2
tiens, tu t'es inspiré de mon code!


hbwrite,hbread... HB quoi :p


Pour info, les méthode de compression/decompression du framework ne sont effectives que sur des fichiers unique. Pas de multifichier sans bidouiller un petit "collage" avant et après, ce qui ne respecterait plus les normes GZIP.

HvB a.k.a BaTo ^^x
http://chat.batto.info/ ^^'
http://batto.info/ 
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
j'ai réussi à extraire le fichier Gzip et à le mettre dans un fichier non compressé et ça me suffit pour mon utilisation

merci à vous 2 !
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
J'ai oublié de poser ma question -_-'

Comment puis-je decompresser le fichier GZIP sans erreur ?

merci d'avance
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
71
reste a savoir de quel chemin d'acces il est question...

repertoiretemp, qui serait incorrect
ou ton fichier gzip, qui serait verrouillé en lecture

a voir si ton fichier est complètement téléchargé (si tu es dans un tel cas), si personne n'a la main dessus, etc

petite reflexion, peut etre hors-sujet....
pas de Close des streams dans ton Finally ?
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
ah oui un close dans les finally serait adéquat : merci

non le fichier n'est pas vérouillé (je peux l'ouvrir avec WinRAR ...)
le fichier est complet

repertoire temp dans mon cas est : D:\Users\Jerem\AppData\Local\Temp\scangzip
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
c'est là que ça coince :
Dim

hbwrite
As
New BinaryWriter(File.OpenWrite(cheminCible))
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
le fichier de sortie ?
si je décompresse je suis obligé d'obtenir un dossier contenant plusieurs fichiers ...

j'essai d'adapter mon code pour une verification des chemin d'accès, création au pire en attendant
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
voilà j'ai tout modifié : ça change strictement rien
j'ai regardé manuellement le dossier de sortie est bien là etc ... rien d'anormal
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
mais bien sûr !

File.OpenWrite sur un dossier c'est normal que ça ne fonctionne pas -_-'
mais comment modifier mon code aussi ? (désolé de t'embeter renfield)
Messages postés
551
Date d'inscription
samedi 8 janvier 2005
Statut
Membre
Dernière intervention
12 avril 2008
2
oui j'avais pris ton code ^^ (j'avais testé celui de MSDN même erreur etc)

mais ce que j'arrive pas à faire c'est justement la bidouille ... comment faire pour extraire chaque fichier du Gzip original ?