Fornisce i metodi e le proprietà per la compressione e la decompressione di flussi mediante l'algoritmo Deflate.
System.MarshalByRefObject
System.IO.Stream
System.IO.Compression.DeflateStream
Spazio dei nomi: System.IO.Compression
Assembly: System (in System.dll)
Public Class DeflateStream _ Inherits Stream
public class DeflateStream : Stream
public ref class DeflateStream : public Stream
type DeflateStream = class inherit Stream end
Il tipo DeflateStream espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
DeflateStream(Stream, CompressionMode) | Inizializza una nuova istanza della classe DeflateStream utilizzando il flusso e il valore di CompressionMode specificati. |
|
DeflateStream(Stream, CompressionMode, Boolean) | Inizializza una nuova istanza della classe DeflateStream utilizzando il flusso e il valore di CompressionMode specificati e un valore che indica se il flusso deve essere lasciato aperto. |
| Nome | Descrizione | |
|---|---|---|
|
BaseStream | Ottiene un riferimento al flusso sottostante. |
|
CanRead | Ottiene un valore che indica se il flusso supporta la lettura durante la decompressione di un file. (Esegue l'override di Stream.CanRead). |
|
CanSeek | Ottiene un valore che indica se il flusso supporta la ricerca. (Esegue l'override di Stream.CanSeek). |
|
CanTimeout | Ottiene un valore che determina se il flusso corrente prevede il timeout. (Ereditato da Stream) |
|
CanWrite | Ottiene un valore che indica se il flusso supporta la scrittura. (Esegue l'override di Stream.CanWrite). |
|
Length | Questa proprietà non è supportata e genera sempre un'eccezione NotSupportedException. (Esegue l'override di Stream.Length). |
|
Position | Questa proprietà non è supportata e genera sempre un'eccezione NotSupportedException. (Esegue l'override di Stream.Position). |
|
ReadTimeout | Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la lettura prima del timeout. (Ereditato da Stream) |
|
WriteTimeout | Ottiene o imposta un valore, in millisecondi, che determina per quanto tempo il flusso tenterà la scrittura prima del timeout. (Ereditato da Stream) |
| Nome | Descrizione | |
|---|---|---|
|
BeginRead | Inizia un'operazione di lettura asincrona. (Esegue l'override di Stream.BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)). |
|
BeginWrite | Inizia un'operazione di scrittura asincrona. (Esegue l'override di Stream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)). |
|
Close | Chiude il flusso corrente e rende disponibili risorse, come socket e handle di file, a esso associate. (Ereditato da Stream) |
|
CopyTo(Stream) | Legge i byte dal flusso corrente e li scrive nel flusso di destinazione. (Ereditato da Stream) |
|
CopyTo(Stream, Int32) | Legge tutti i byte dal flusso corrente e li scrive in un flusso di destinazione, utilizzando una dimensione di buffer specificata. (Ereditato da Stream) |
|
CreateObjRef | Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto. (Ereditato da MarshalByRefObject) |
|
CreateWaitHandle | Obsoleta. Assegna un oggetto WaitHandle. (Ereditato da Stream) |
|
Dispose() | Rilascia tutte le risorse utilizzate dalla classe Stream. (Ereditato da Stream) |
|
Dispose(Boolean) | Rilascia le risorse non gestite utilizzate da DeflateStream e facoltativamente rilascia le risorse gestite. (Esegue l'override di Stream.Dispose(Boolean)). |
|
EndRead | Attende il completamento della lettura asincrona in sospeso. (Esegue l'override di Stream.EndRead(IAsyncResult)). |
|
EndWrite | Termina un'operazione di scrittura asincrona. (Esegue l'override di Stream.EndWrite(IAsyncResult)). |
|
Equals(Object) | Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) |
|
Flush | Svuota il contenuto del buffer interno dell'oggetto flusso corrente nel flusso sottostante. (Esegue l'override di Stream.Flush()). |
|
GetHashCode | Funge da funzione hash per un determinato tipo. (Ereditato da Object) |
|
GetLifetimeService | Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza. (Ereditato da MarshalByRefObject) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
InitializeLifetimeService | Consente di ottenere un oggetto servizio di durata per il controllo dei criteri di durata per l'istanza. (Ereditato da MarshalByRefObject) |
|
MemberwiseClone() | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
MemberwiseClone(Boolean) | Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente. (Ereditato da MarshalByRefObject) |
|
ObjectInvariant | Infrastruttura. Fornisce supporto per un Contract. (Ereditato da Stream) |
|
Read | Legge un numero di byte decompressi nella matrice di byte specificata. (Esegue l'override di Stream.Read(Byte[], Int32, Int32)). |
|
ReadByte | Legge un byte dal flusso e sposta in avanti la posizione corrente all'interno del flusso di un byte o restituisce -1 se si trova alla fine del flusso. (Ereditato da Stream) |
|
Seek | Questa operazione non è supportata e genera sempre un'eccezione NotSupportedException. (Esegue l'override di Stream.Seek(Int64, SeekOrigin)). |
|
SetLength | Questa operazione non è supportata e genera sempre un'eccezione NotSupportedException. (Esegue l'override di Stream.SetLength(Int64)). |
|
ToString | Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
|
Write | Scrive i byte compressi nel flusso sottostante dalla matrice di byte specificata. (Esegue l'override di Stream.Write(Byte[], Int32, Int32)). |
|
WriteByte | Scrive un byte nella posizione corrente del flusso e sposta in avanti di un byte la posizione del flusso. (Ereditato da Stream) |
Questa classe rappresenta l'algoritmo Deflate, un algoritmo standard per la compressione e la decompressione di file senza perdita di dati, che utilizza una combinazione dell'algoritmo LZ77 e della codifica Huffman. I dati possono essere prodotti o utilizzati, anche per un flusso di dati di input sequenziali di lunghezza arbitraria, utilizzando solo la quantità di spazio di archiviazione intermedio associata in precedenza. È possibile implementare il formato immediatamente in modo non previsto nei brevetti. Per ulteriori informazioni, vedere il documento RFC 1951. DEFLATE Compressed Data Format Specification version 1.3" (la pagina potrebbe essere in inglese).
Questa classe non fornisce di per sé la funzionalità per l'aggiunta di file o l'estrazione di file dagli archivi zip.
La classe GZipStream utilizza il formato dati gzip che include un valore del controllo di ridondanza ciclico per rilevare il danneggiamento dei dati. Il formato dati gzip utilizza lo stesso algoritmo di compressione della classe DeflateStream.
La funzionalità di compressione di DeflateStream e GZipStream viene esposta come flusso. I dati vengono letti byte per byte, pertanto non è possibile eseguire più passaggi per determinare il modo ottimale per comprimere file interi o blocchi estesi di dati. È consigliabile utilizzare le classi DeflateStream e GZipStream su origini non compresse di dati. Se i dati di origine sono già compressi, l'utilizzo di queste classi può comportare un aumento della dimensione del flusso.
Nell'esempio seguente viene illustrato come utilizzare la classe DeflateStream per comprimere e decomprimere una directory di file.
Imports System.IO Imports System.IO.Compression Module Module1 Sub Main() ' Path to directory of files to compress. Dim dirpath As String = "c:\users\pubic\reports" Dim di As DirectoryInfo = New DirectoryInfo(dirpath) ' Compress the directory's files. For Each fi As FileInfo In di.GetFiles() Compress(fi) Next ' Decompress all *.cmp files in the directory. For Each fi As FileInfo In di.GetFiles("*.cmp") Decompress(fi) Next End Sub ' Method to compress. Private Sub Compress(ByVal fi As FileInfo) ' Get the stream of the source file. Using inFile As FileStream = fi.OpenRead() ' Compressing: ' Prevent compressing hidden and already compressed files. If (File.GetAttributes(fi.FullName) And FileAttributes.Hidden) _ <> FileAttributes.Hidden And fi.Extension <> ".cmp" Then ' Create the compressed file. Using outFile As FileStream = File.Create(fi.FullName + ".cmp") Using Compress As DeflateStream = 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()) End Using End Using End If End Using End Sub ' Method to decompress. Private Sub Decompress(ByVal fi As FileInfo) ' Get the stream of the source file. Using inFile As FileStream = fi.OpenRead() ' Get orignial file extension, for example "doc" from report.doc.cmp. Dim curFile As String = fi.FullName Dim origName = curFile.Remove(curFile.Length - fi.Extension.Length) ' Create the decompressed file. Using outFile As FileStream = File.Create(origName) Using Decompress As DeflateStream = New DeflateStream(inFile, _ CompressionMode.Decompress) ' Copy the decompression stream into the output file. Decompress.CopyTo(outFile) Console.WriteLine("Decompressed: {0}", fi.Name) End Using End Using End Using End Sub End Module
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
Supportato in: 4, 3.5, 3.0, 2.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.