Les Snippets

Connexion

Compression / Decompression GZip

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 01/09/2006 19:45:10 et initié par MorpionMx [Liste]
Date de mise à jour : 19/09/2006 11:00:31
Vue : 10060
Catégorie(s) : Compression & Split, Fichier / Disque
Langages dispo pour ce code :
- C# 2.x
- Java
- VB 2005



Langage : C# 2.x
Date ajout : 01/09/2006
Posté par MorpionMx [Liste]
DateMAJ : 19/09/2006

using System.IO;
using System.IO.Compression;

//...
public static void CompressFile(string inputFileName, string outputFileName) 
{
    byte[] buffer = new byte[4096];
    if (File.Exists(inputFileName)) 
    {    
        using (FileStream inputFile = File.Open(inputFileName, FileMode.Open), outputFile = File.Create(outputFileName)) 
        {

            using (GZipStream gzip = new GZipStream(outputFile, CompressionMode.Compress)) 
            {
                int n = 0;
                while((n = inputFile.Read(buffer, 0, buffer.Length)) != 0) 
                {
                    gzip.Write(buffer, 0, n);
                }
            }
        }
    }
}


public static void UncompressFile(string inputFileName, string outputFileName) 
{
    byte[] buffer = new byte[4096];
    if(File.Exists(inputFileName)) 
    {
        using (FileStream intputFile = File.Open(inputFileName, FileMode.Open), outputFile = File.Create(outputFileName)) 
        {
            using (GZipStream gzip = new GZipStream(intputFile, CompressionMode.Decompress)) 
            {
                int n;
                while ((n = gzip.Read(buffer, 0, buffer.Length)) != 0) 
                {
                    outputFile.Write(buffer, 0, n);
                }
            }
        }
    }
}


Langage : Java
Date ajout : 11/09/2006
Posté par Twinuts [Liste]
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

public class GZIP {
    public static boolean compress(String iFilename, String oFilename){
        try {
            // prepare le gzip de sortie
            GZIPOutputStream out = new GZIPOutputStream(new FileOutputStream(oFilename));
            // ouvre le fichier d'entree
            FileInputStream in = new FileInputStream(iFilename);
            //transfere les bytes vers le gzip
            byte[] buf = new byte[1024];
            int offset;
            while ((offset = in.read(buf)) > 0) 
                out.write(buf, 0, offset);
            in.close();
        
            // On complete le fichier GZIP
            out.finish();
            out.close();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }
    
    public static boolean uncompress(String iFilename, String oFilename){
        try {
            // Ouvre le fichier compresse
            GZIPInputStream in = new GZIPInputStream(new FileInputStream(iFilename));
            // ouvre le fichier de sortie
            OutputStream out = new FileOutputStream(oFilename);
            // transfere les byte compresse vers le fichier de sortie
            byte[] buf = new byte[1024];
            int offset;
            while ((offset = in.read(buf)) > 0)
                out.write(buf, 0, offset);
        
            // Ferme le fichier et le gzip
            in.close();
            out.close();
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }
}

Langage : VB 2005
Date ajout : 16/03/2007
Posté par hvb [Liste]

Imports System.IO
Imports System.IO.Compression

Public Class HbGzip

    Public Shared Function Compress(ByVal cheminSource As String, ByVal cheminCible As String) As String
        Try
            Dim hbread As New BinaryReader(File.OpenRead(cheminSource))
            Dim F_array(hbread.BaseStream.Length) As Byte
            hbread.BaseStream.Seek(0, SeekOrigin.Begin)
            hbread.BaseStream.Read(F_array, 0, F_array.Length)
            hbread.BaseStream.Flush()
            hbread.Close()
            Dim tmpstream As FileStream = New FileStream(cheminCible, FileMode.OpenOrCreate)
            Dim gzipper As GZipStream = New GZipStream(tmpstream, CompressionMode.Compress)
            gzipper.Write(F_array, 0, F_array.Length)
            gzipper.Flush()
            gzipper.Close()
            Return "compression effectuée avec succés"
        Catch ex As Exception
            Return ex.ToString
        End Try
    End Function

    Public Shared Function Decompress(ByVal cheminSource As String, ByVal cheminCible As String) 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
            Do
                readlen = gzipper.Read(F_array, 0, F_array.Length)
                If readlen > 0 Then
                    flag = True
                    If readlen = (bufferLen + 1) Then hbwrite.Write(F_array, 0, readlen) Else hbwrite.Write(F_array, 0, readlen - 1)
                Else
                    flag = False
                End If
            Loop While (flag)
            hbwrite.Close()
            gzipper.Close()
            Return "decompression effectuée avec succés"
        Catch ex As Exception
            Return ex.ToString
        End Try
    End Function
End Class



Snippets en rapport avec : Compression, Decompression, Gzip, Gzipstream, Filestream



Codes sources en rapport avec : Compression, Decompression, Gzip, Gzipstream, Filestream

{Visual Basic, VB6, VB.NET, VB 2005} [.NET2] COMPRESSION/DÉCOMPRESSION GZIP DE FICHIER GRÂCE À IO.COMPRESSION
Un tout petit sample de la classe incroyablement pratique Io.Compression, permettant de compresser e...

{Visual Basic, VB6, VB.NET, VB 2005} NET-2 COMPRESSION DE FICHIER EN ZIP AVEC L'AIDE DE VJ# ET EN GZIP AVEC L'AJOUT DU NOM DE FICHIER
L'idée originale est venue d'un besoin de regrouper un paquet de fichiers zip (des polices de caract...

{C# / C#.NET} COMPRESSION / DECOMPRESSION A PARTIR DU SDK LZMA DE 7ZIP ( MULTI FICHIER )
Comme le dit le titre, cette librairie / class, je ne sais pas comment vous appelez ça ( ça ne fait ...

{C# / C#.NET} COMPRESSION GZIP AVEC RÉCUPERATION DU NOM DE FICHIER
Montre comment compresser un fichier avec l'algorythme "gzip" est de recuperer le nom du fichier lor...

{Delphi} HUFFMAN ADAPTATIF
Exemple de Compression / Decompression avec l'algorythme Huffman Adaptatif en Trubo Pascal......

{Delphi} HUFFMAN
Exemple de Compression / Decompression avec l'algorythme Huffman en Trubo Pascal......

{Delphi} LEMPEL-ZIV-WELCH
Exemple de Compression / Decompression avec l'algorythme Lempel-Ziv-Welch (LZW) en Trubo Pascal......

{Javascript / DHTML} COMPRESSION RLE (PART II)
Ben voilà, c'est la suite de ma dernière source, sur la compression, là ca utilise la méthode de com...

{Javascript / DHTML} COMPRESSION DE CHAINE
Voilà, c'est un petit script de compression, pas très au point mais c'est fait pour être amélioré. ...

{C# / C#.NET} COMPRESSION GZ AVEC LE FRAMEWORK 2
Je vous présente une des nouvelles possibilités du framework 2, la compression gz. En effet dans le...