GZipStream

citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 - 22 juin 2007 à 14:56
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 - 1 juil. 2007 à 10:03
Bonjour,

Je sais compresser et decompresser mais je voudrait recuperer le nom original du fichier et nom celui du fichier gz.

Quelqu'un a déjà fait ca ?

Citt_jr
Bats toi avec les meilleurs, crève avec le reste

12 réponses

Nicodelphi Messages postés 82 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 19 janvier 2014
22 juin 2007 à 20:23
Slt, Pourquoi lorsque tu compresse tu change le nom tu peut trés bien garder le nom tu fichier avec la meme extension est lui ajouter l'extension .gz lors de la compression.
Je ne connait pas le code que tu as utiliser. Ce serait bien que tu le copie comme sa je pourrait peut etre tu repondre en fonction te ton code.
0
citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 3
25 juin 2007 à 09:07
Voila j'utilise l'exemple que l'on trouve un peut partous.
Mais je voudrait ne pas preciser le nom du fichier a extraire !!





FileStream
fs =

new



FileStream
(

@"c:\\1.gz"
,

FileMode
.Open);


GZipStream
gz =

new



GZipStream
(fs,

CompressionMode
.Decompress,

true
);


byte
[] LengthOriginalFile =

new



byte
[4];


int
position = (

int
)fs.Length - 4;fs.Position = position;

fs.Read(LengthOriginalFile, 0, 4);

fs.Position = 0;


int
LengthOri =

BitConverter
.ToInt32(LengthOriginalFile, 0);


byte
[] buffer =

new



byte
[LengthOri + 100];


int
offset = 0;


int
total = 0;


while
(

true
){


int
lectureoctet = gz.Read(buffer, offset, 100);


if
(lectureoctet == 0)

break
;offset += lectureoctet;

total += lectureoctet;

}

fs =


new



FileStream
(

@"c:\\1.bmp"
,

FileMode
.Create);

fs.Write(buffer, 0, total);

fs.Flush();

gz.Close();

fs.Close();





Citt_jr
Bats toi avec les meilleurs, crève avec le reste
0
Nicodelphi Messages postés 82 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 19 janvier 2014
27 juin 2007 à 19:50
slt, désole pour le retard mais en ce moment je n'est pas trop le temps de repondre.
je te reponderait demain ou ce soir sans faute
et merci pour ton code
0
Nicodelphi Messages postés 82 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 19 janvier 2014
27 juin 2007 à 20:42
tiens voila vite fais le code qu'il te faut je metterait un exemple demain sur le site

pour la compression

 private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Title = "Ouvrir";
            openFileDialog1.FileName = "Choisir Fichier";
            openFileDialog1.Multiselect = false;
            openFileDialog1.CheckFileExists = true;
            if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                label3.Text = openFileDialog1.FileName;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Title = "Sauver";
            saveFileDialog1.FileName = "Choisir emplacement";
            saveFileDialog1.OverwritePrompt = true;
            saveFileDialog1.DefaultExt = ".gz";
            if (saveFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                label4.Text = saveFileDialog1.FileName;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            try
            {
                FileStream filStr = new FileStream(label3.Text, FileMode.Open);
                byte[] buffer = new byte[filStr.Length];
                filStr.Read(buffer, 0, (int)filStr.Length);
                filStr.Close();
                filStr = new FileStream(label3.Text + ".gz" , FileMode.Create);
                GZipStream zip = new GZipStream(filStr, CompressionMode.Compress, false);
                zip.Write(buffer, 0, buffer.Length);
                zip.Close();
                filStr.Close();
                MessageBox.Show( "Compression réussi");
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.Message);
            }
        }

        private void Form2_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
    }

pour la décompression

 private void button3_Click(object sender, EventArgs e)
        {
            try
            {
               
                FileStream fs = new FileStream(label3.Text, FileMode.Open);
                GZipStream gz = new GZipStream(fs, CompressionMode.Decompress, true);
                byte[] LengthOrigine = new byte[4];
                int oisition = (int)fs.Length - 4;
                fs.Position = oisition;
                fs.Read(LengthOrigine, 0, 4);
                fs.Position = 0;
                int ori = BitConverter.ToInt32(LengthOrigine, 0);
                byte[] buffer = new byte[ori + 100];
                int offset = 0;
                int total = 0;
                while (true)
                {
                    int lectureoctzt = gz.Read(buffer, offset, 100);
                    if (lectureoctzt == 0) break;
                    offset += lectureoctzt;
                    total += lectureoctzt;
                }
                int count = 3;
                string txt = label3.Text ;
                string val = txt.Substring(0,txt.Length-count);
                fs = new FileStream(val , FileMode.Create);
                fs.Write(buffer, 0, total);
                fs.Flush();
                gz.Close();
                fs.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Title = "Ouvrir";
            openFileDialog1.FileName = "Choisir Fichier";
            openFileDialog1.Multiselect = false;
            openFileDialog1.CheckFileExists = true;
            openFileDialog1.Filter = "Fichiers gz|*.gz";
            if (openFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                label3.Text = openFileDialog1.FileName;
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            saveFileDialog1.Title = "Sauver";
            saveFileDialog1.FileName = "Choisir emplacement";
            saveFileDialog1.OverwritePrompt = true;
           
            if (saveFileDialog1.ShowDialog(this) == DialogResult.OK)
            {
                label4.Text = saveFileDialog1.FileName;
            }
        }
    }
voila j'espere que tu comprendras mais de toutes facon il y aura un exemple sur le site
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 3
28 juin 2007 à 08:32
Bonjour,

Ca je sais faire ya pas de probleme, moi ce que je veut c'est recuperer le nom du fichier compresser lors de la recuperation pas en fournir un.

Citt_jr
Bats toi avec les meilleurs, crève avec le reste
0
Nicodelphi Messages postés 82 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 19 janvier 2014
28 juin 2007 à 14:29
http://www.csharpfr.com/code.aspx?ID=43275 voila la source j'espere que sa d'aidera.
0
citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 3
28 juin 2007 à 15:30
Va voir ta source je t'ai un commentaire !

Citt_jr
Bats toi avec les meilleurs, crève avec le reste
0
ricklekebekoi Messages postés 303 Date d'inscription mardi 11 février 2003 Statut Membre Dernière intervention 24 avril 2009 5
28 juin 2007 à 15:34
En fait, comme on ne semble pas comprendre ta question visiblement  je vais tenter de reformuler

Ce que tu souhaite, c'est de compresser "monfichierNormal.doc" en "monfichierComp.gzip".
Ça, pas de probleme.
C'est quand vient le temps de décompresser que ça se complique.
Tou souhaite décompresser le fichier "monfichierComp.gzip", et que, automatiquement, le fichier décompresser se nomme "monfichierNormal.doc", sans que tu ait a lui dire ni le nom de fichier décompressé, ni l'extension, c'est bien ça ?

Toujours est-il que je ne connais pas la réponse, mais bon si cette reformulation peut t'être utile, c'est déjà sa !

Eric
0
citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 3
28 juin 2007 à 15:44
Dsl de mettre mal exprimer mais c'est exactement ce que tu dit :

1 - Je compresse le fichier "toto.bmp" en "tata.gz"
2 - Lorsque je decompresse "tata.gz" je veut recuperer mon fichier "toto.bmp" et non "tata" qui correspond au nom du fichier gz

J'ai vu qu'avec le Shell de GZIP il est possible d'éffectuer cette opération en precisant le parametre -n mais le code ne figure nulle part :(

Si quelqu'un le connais je le veut bien, je me prend déjà assez la tête avec ca.

Citt_jr
Bats toi avec les meilleurs, crève avec le reste
0
Nicodelphi Messages postés 82 Date d'inscription vendredi 19 janvier 2007 Statut Membre Dernière intervention 19 janvier 2014
28 juin 2007 à 16:40
pas obliger d'etre désagreable on est deja bien sympa de vouloir d'aider
0
citt Messages postés 209 Date d'inscription dimanche 8 juin 2003 Statut Membre Dernière intervention 9 février 2012 3
28 juin 2007 à 16:47
Je suis désolé d'avoir été désagréable mais cela fait maintenant 1 semaine que je suis sur ce probleme et ca commence à me prendre le choux !!!

Citt_jr
Bats toi avec les meilleurs, crève avec le reste
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
1 juil. 2007 à 10:03
salut,

ce n'est peut être pas la méthode du logiciel que tu cites...mais tu peux par exemple ajouter dans l'archive le nom du fichier soit dans un format fixe (256 octets par exemple et la compression réduira), soit un format avec un dword avec la taille de la chaine puis la chaine contenant le nom de ton fichier...

je présume que le logiciel cité fait en fait un tar.gz...

je ne pense absolument pas que garder le nom du fichier fasse partie de GZIP mais plutot de TAR...car tar fait une archive non compressée et gzip la compresse...

ShareVB
0
Rejoignez-nous