Fornisce i metodi e le proprietà utilizzate per comprimere e decomprimere i flussi.
System.MarshalByRefObject
System.IO.Stream
System.IO.Compression.GZipStream
Spazio dei nomi: System.IO.Compression
Assembly: System (in System.dll)
Public Class GZipStream _ Inherits Stream
public class GZipStream : Stream
public ref class GZipStream : public Stream
type GZipStream = class inherit Stream end
Il tipo GZipStream espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
GZipStream(Stream, CompressionMode) | Inizializza una nuova istanza della classe GZipStream utilizzando il flusso e il valore di CompressionMode specificati. |
|
GZipStream(Stream, CompressionMode, Boolean) | Inizializza una nuova istanza della classe GZipStream 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 dalla classe GZipStream ed eventualmente 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 | Gestisce la fine di 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 | Scarica il contenuto del buffer interno dell'oggetto GZipStream 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 proprietà non è supportata e genera sempre un'eccezione NotSupportedException. (Esegue l'override di Stream.Seek(Int64, SeekOrigin)). |
|
SetLength | Questa proprietà 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 il formato dati gzip, che utilizza un algoritmo standard del settore per la compressione e la decompressione di file senza perdita dei dati. Il formato include un valore di controllo di ridondanza ciclico per il rilevamento di dati danneggiati. Il formato dati gzip utilizza lo stesso algoritmo della classe DeflateStream, ma può essere esteso ai fini dell'utilizzo di altri formati di compressione. È possibile implementare il formato immediatamente in modo non previsto nei brevetti.
Gli oggetti GZipStream compressi scritti in un file con estensione gz possono essere decompressi utilizzando numerosi strumenti di compressione comuni. Questa classe non fornisce tuttavia di per sé la funzionalità per l'aggiunta o l'estrazione di file da archivi zip.
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.
Note per gli eredi
Quando si eredita dalla classe GZipStream, è necessario eseguire l'override dei seguenti membri:CanSeek, CanWrite e CanRead.
Nell'esempio seguente viene illustrato come utilizzare la classe GZipStream 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\public\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 *.gz files in the directory. For Each fi As FileInfo In di.GetFiles("*.gz") 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 <> ".gz" Then ' Create the compressed file. Using outFile As FileStream = File.Create(fi.FullName + ".gz") Using Compress As GZipStream = _ New GZipStream(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.gz. 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 GZipStream = New GZipStream(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; namespace zip { 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 *.gz files in the directory. foreach (FileInfo fi in di.GetFiles("*.gz")) { 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 != ".gz") { // Create the compressed file. using (FileStream outFile = File.Create(fi.FullName + ".gz")) { using (GZipStream Compress = new GZipStream(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.gz. string curFile = fi.FullName; string origName = curFile.Remove(curFile.Length - fi.Extension.Length); //Create the decompressed file. using (FileStream outFile = File.Create(origName)) { using (GZipStream Decompress = new GZipStream(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.