GZipStream

Signaler
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
-
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
-
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
A voir également:

12 réponses

Messages postés
82
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2014

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.
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
3
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
Messages postés
82
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2014

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
Messages postés
82
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2014

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
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
3
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
Messages postés
82
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2014

http://www.csharpfr.com/code.aspx?ID=43275 voila la source j'espere que sa d'aidera.
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
3
Va voir ta source je t'ai un commentaire !

Citt_jr
Bats toi avec les meilleurs, crève avec le reste
Messages postés
303
Date d'inscription
mardi 11 février 2003
Statut
Membre
Dernière intervention
24 avril 2009
5
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
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
3
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
Messages postés
82
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
19 janvier 2014

pas obliger d'etre désagreable on est deja bien sympa de vouloir d'aider
Messages postés
209
Date d'inscription
dimanche 8 juin 2003
Statut
Membre
Dernière intervention
9 février 2012
3
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
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
20
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