Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Costruttore DeflateStream (Stream, CompressionMode, Boolean)

 

Data di pubblicazione: ottobre 2016

Inizializza una nuova istanza della classe DeflateStream usando la modalità di compressione del flusso specificata. Facoltativamente mantiene aperto il flusso.

Spazio dei nomi:   System.IO.Compression
Assembly:  System (in System.dll)

public DeflateStream(
	Stream stream,
	CompressionMode mode,
	bool leaveOpen
)

Parametri

stream
Type: System.IO.Stream

Flusso da comprimere o decomprimere.

mode
Type: System.IO.Compression.CompressionMode

Uno dei valori di enumerazione che indica se comprimere o decomprimere il flusso.

leaveOpen
Type: System.Boolean

true per mantenere il flusso aperto dopo avere eliminato l'oggetto DeflateStream; in caso contrario, false.

Exception Condition
ArgumentNullException

stream è null.

ArgumentException

mode non è un valore valido di CompressionMode.

-oppure-

CompressionMode è Compress e CanWrite è false.

-oppure-

CompressionMode è Decompress e CanRead è false.

Per impostazione predefinita, DeflateStream proprietaria il flusso sottostante, il flusso anche il flusso sottostante. Si noti che lo stato del flusso sottostante può incidere sulle funzionalità del flusso. Inoltre, viene eseguito alcun controllo esplicito, in modo non aggiuntive vengono generate eccezioni quando viene creata la nuova istanza.

Se un'istanza della DeflateStream classe viene creata con il mode uguale al parametro Compress, informazioni di intestazione vengono inserite immediatamente. Se si verifica alcuna ulteriore azione, il flusso viene visualizzato come un file compresso, vuoto valido.

Utilizzando la DeflateStream classe per comprimere un file maggiore di 4 GB viene generata un'eccezione.

Per impostazione predefinita, il livello di compressione è impostato su Optimal quando la modalità di compressione è Compress.

Esempio di codice seguente viene illustrato come utilizzare la DeflateStream classe per comprimere e decomprimere un file.

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

public class Program
{
    static string directoryPath = @"c:\temp";
    public static void Main()
    {

        DirectoryInfo directorySelected = new DirectoryInfo(directoryPath);
           Compress(directorySelected);


        foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.cmp"))
        {
            Decompress(fileToDecompress);
        }
    }

    public static void Compress(DirectoryInfo directorySelected)
    {


        foreach (FileInfo file in directorySelected.GetFiles("*.xml"))
        using (FileStream originalFileStream = file.OpenRead())
        {
            if ((File.GetAttributes(file.FullName) & FileAttributes.Hidden)
                != FileAttributes.Hidden & file.Extension != ".cmp")
            {
                using (FileStream compressedFileStream = File.Create(file.FullName + ".cmp"))
                {
                    using (DeflateStream compressionStream = new DeflateStream(compressedFileStream, CompressionMode.Compress))
                    {
                        originalFileStream.CopyTo(compressionStream);
                    }
                }

                FileInfo info = new FileInfo(directoryPath + "\\" + file.Name + ".cmp");
                Console.WriteLine("Compressed {0} from {1} to {2} bytes.", file.Name, file.Length, info.Length);
            }
        }
    }

    public static void Decompress(FileInfo fileToDecompress)
    {
        using (FileStream originalFileStream = fileToDecompress.OpenRead())
        {
            string currentFileName = fileToDecompress.FullName;
            string newFileName = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length);

            using (FileStream decompressedFileStream = File.Create(newFileName))
        	{
                using (DeflateStream decompressionStream = new DeflateStream(originalFileStream, CompressionMode.Decompress))
        	    {
                    decompressionStream.CopyTo(decompressedFileStream);
                    Console.WriteLine("Decompressed: {0}", fileToDecompress.Name);
        	    }
        	}
        }
    }
}

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 2.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: