Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

DeflateStream, classe

Fournit des méthodes et des propriétés pour compresser et décompresser des flux à l'aide de l'algorithme Deflate.

System.Object
  System.MarshalByRefObject
    System.IO.Stream
      System.IO.Compression.DeflateStream

Espace de noms :  System.IO.Compression
Assembly :  System (dans System.dll)
public class DeflateStream : Stream

Le type DeflateStream expose les membres suivants.

  Nom Description
Méthode publique Pris en charge par XNA Framework DeflateStream(Stream, CompressionMode) Initialise une nouvelle instance de la classe DeflateStream avec le flux et la valeur CompressionMode spécifiés.
Méthode publique Pris en charge par XNA Framework DeflateStream(Stream, CompressionMode, Boolean) Initialise une nouvelle instance de la classe DeflateStream à l'aide du flux spécifié et de la valeur CompressionMode, et d'une valeur qui spécifie s'il faut laisser le flux ouvert.
Début
  Nom Description
Propriété publique Pris en charge par XNA Framework BaseStream Obtient une référence au flux sous-jacent.
Propriété publique Pris en charge par XNA Framework CanRead Obtient une valeur indiquant si le flux prend en charge la lecture pendant la décompression d'un fichier. (Substitue Stream.CanRead.)
Propriété publique Pris en charge par XNA Framework CanSeek Obtient une valeur indiquant si le flux prend en charge la recherche. (Substitue Stream.CanSeek.)
Propriété publique Pris en charge par XNA Framework CanTimeout Obtient une valeur qui détermine si le flux actuel peut expirer. (Hérité de Stream.)
Propriété publique Pris en charge par XNA Framework CanWrite Obtient une valeur indiquant si le flux prend en charge l'écriture. (Substitue Stream.CanWrite.)
Propriété publique Pris en charge par XNA Framework Length Cette propriété n'est pas prise en charge et lève toujours NotSupportedException. (Substitue Stream.Length.)
Propriété publique Pris en charge par XNA Framework Position Cette propriété n'est pas prise en charge et lève toujours NotSupportedException. (Substitue Stream.Position.)
Propriété publique Pris en charge par XNA Framework ReadTimeout Obtient ou définit une valeur exprimée en millisecondes qui définit la durée pendant laquelle le flux tentera d'effectuer la lecture avant d'arriver à expiration. (Hérité de Stream.)
Propriété publique Pris en charge par XNA Framework WriteTimeout Obtient ou définit une valeur exprimée en millisecondes qui définit la durée pendant laquelle le flux tentera d'inscrire des données avant d'arriver à expiration. (Hérité de Stream.)
Début
  Nom Description
Méthode publique Pris en charge par XNA Framework BeginRead Débute une opération de lecture asynchrone. (Substitue Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object).)
Méthode publique Pris en charge par XNA Framework BeginWrite Débute une opération d'écriture asynchrone. (Substitue Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object).)
Méthode publique Pris en charge par XNA Framework Close Ferme le flux actuel et libère les ressources (telles que les sockets et les handles de fichiers) associées à celui-ci. (Hérité de Stream.)
Méthode publique CopyTo(Stream) Lit les octets à partir du flux actuel et les écrit dans le flux de destination. (Hérité de Stream.)
Méthode publique CopyTo(Stream, Int32) Lit tous les octets du flux actuel et les écrit dans un flux de destination, à l'aide d'une taille de mémoire tampon spécifiée. (Hérité de Stream.)
Méthode publique CreateObjRef Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant. (Hérité de MarshalByRefObject.)
Méthode protégée Pris en charge par XNA Framework CreateWaitHandle Obsolète. Alloue un objet WaitHandle. (Hérité de Stream.)
Méthode publique Pris en charge par XNA Framework Dispose() Libère toutes les ressources utilisées par Stream. (Hérité de Stream.)
Méthode protégée Pris en charge par XNA Framework Dispose(Boolean) Libère les ressources non managées utilisées par DeflateStream et libère éventuellement les ressources managées. (Substitue Stream.Dispose(Boolean).)
Méthode publique Pris en charge par XNA Framework EndRead Attend que la requête asynchrone en attente se termine. (Substitue Stream.EndRead(IAsyncResult).)
Méthode publique Pris en charge par XNA Framework EndWrite Termine une opération d'écriture asynchrone. (Substitue Stream.EndWrite(IAsyncResult).)
Méthode publique Pris en charge par XNA Framework Equals(Object) Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode protégée Pris en charge par XNA Framework Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework Flush Vide le contenu de la mémoire tampon interne de l'objet de flux en cours dans le flux sous-jacent. (Substitue Stream.Flush().)
Méthode publique Pris en charge par XNA Framework GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique GetLifetimeService Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode publique Pris en charge par XNA Framework GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique InitializeLifetimeService Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance. (Hérité de MarshalByRefObject.)
Méthode protégée Pris en charge par XNA Framework MemberwiseClone() Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode protégée MemberwiseClone(Boolean) Crée une copie superficielle de l'objet MarshalByRefObject actuel. (Hérité de MarshalByRefObject.)
Méthode protégée ObjectInvariant Infrastructure. Prend en charge un Contract. (Hérité de Stream.)
Méthode publique Pris en charge par XNA Framework Read Lit un certain nombre d'octets décompressés dans le tableau d'octets spécifié. (Substitue Stream.Read(Byte[], Int32, Int32).)
Méthode publique Pris en charge par XNA Framework ReadByte Lit un octet à partir du flux et avance d'un octet la position au sein du flux, ou retourne -1 s'il se situe à la fin du flux. (Hérité de Stream.)
Méthode publique Pris en charge par XNA Framework Seek Cette opération n'est pas prise en charge et lève toujours NotSupportedException. (Substitue Stream.Seek(Int64, SeekOrigin).)
Méthode publique Pris en charge par XNA Framework SetLength Cette opération n'est pas prise en charge et lève toujours NotSupportedException. (Substitue Stream.SetLength(Int64).)
Méthode publique Pris en charge par XNA Framework ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publique Pris en charge par XNA Framework Write Écrit les octets compressés dans le flux sous-jacent à partir du tableau d'octets spécifié. (Substitue Stream.Write(Byte[], Int32, Int32).)
Méthode publique Pris en charge par XNA Framework WriteByte Écrit un octet à la position actuelle dans le flux actuel et avance d'un octet la position dans flux. (Hérité de Stream.)
Début

Cette classe représente l'algorithme Deflate, un algorithme standard utilisé pour la compression et la décompression de fichiers sans perte. Il combine l'algorithme LZ77 et le codage Huffman. Même pour un flux de données d'entrée arbitrairement long et présenté séquentiellement, les données peuvent être produites ou consommées uniquement à l'aide d'une quantité précédemment liée de stockage intermédiaire. Le format peut être aisément implémenté de telle sorte qu'il ne soit couvert par aucun brevet. Pour plus d'informations, consultez RFC 1951. DEFLATE Compressed Data Format Specification version 1.3."

Cette classe ne fournit pas de manière inhérente des fonctionnalités permettant l'ajout de fichiers dans des fichiers d'archives .zip ou l'extraction de fichiers depuis des fichiers d'archives .zip.

La classe GZipStream utilise le format de données gzip qui inclut une valeur de contrôle de redondance cyclique pour détecter un endommagement des données. Le format de données gzip utilise le même algorithme de compression que la classe DeflateStream.

Les fonctionnalités de compression dans DeflateStream et GZipStream sont exposées sous la forme d'un flux. Les données étant lues octet par octet, il n'est pas possible d'exécuter plusieurs passages afin de déterminer la meilleure méthode pour compresser des fichiers entiers ou de grands blocs de données. Les classes DeflateStream et GZipStream conviennent mieux aux sources de données non compressées. Si les données sources sont déjà compressées, l'utilisation de ces classes peut en fait augmenter la taille du flux.

L'exemple suivant indique comment utiliser la classe DeflateStream pour compresser et décompresser un répertoire de fichiers.


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

public class Program
{

    public static void Main()
    {
        // Path to directory of files to compress and decompress.
        string dirpath = @"c:\users\public\reports";

        DirectoryInfo di = new DirectoryInfo(dirpath);

        // Compress the directory's files.
        foreach (FileInfo fi in di.GetFiles())
        {
            Compress(fi);
    	}

        // Decompress all *.cmp files in the directory.
        foreach (FileInfo fi in di.GetFiles("*.cmp"))
        {
    		Decompress(fi);
        }


    }

    public static void Compress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
            // Prevent compressing hidden and already compressed files.
            if ((File.GetAttributes(fi.FullName) & FileAttributes.Hidden)
                != FileAttributes.Hidden & fi.Extension != ".cmp")
            {
                // Create the compressed file.
                using (FileStream outFile = 
                        File.Create(fi.FullName + ".cmp"))
                {
                    using (DeflateStream Compress = 
                        new DeflateStream(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());
                    }
                }
            }
        }
    }

    public static void Decompress(FileInfo fi)
    {
        // Get the stream of the source file.
        using (FileStream inFile = fi.OpenRead())
        {
        	// Get original file extension, 
            // for example "doc" from report.doc.cmp.
        	string curFile = fi.FullName;
        	string origName = curFile.Remove(curFile.Length 
                    - fi.Extension.Length);

        	//Create the decompressed file.
        	using (FileStream outFile = File.Create(origName))
        	{
        	    using (DeflateStream Decompress = new DeflateStream(inFile,
        		    CompressionMode.Decompress))
        	    {
                        // Copy the decompression stream 
                        // into the output file.
            		    Decompress.CopyTo(outFile);
            		
            		Console.WriteLine("Decompressed: {0}", fi.Name);
        	    }
        	}
        }
    }
}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ