DeflateStream Costruttori

Definizione

Inizializza una nuova istanza della classe DeflateStream.

Overload

Nome Descrizione
DeflateStream(Stream, CompressionLevel)

Inizializza una nuova istanza della DeflateStream classe utilizzando il flusso e il livello di compressione specificati.

DeflateStream(Stream, CompressionMode)

Inizializza una nuova istanza della classe utilizzando il flusso e la DeflateStream modalità di compressione specificati.

DeflateStream(Stream, CompressionLevel, Boolean)

Inizializza una nuova istanza della DeflateStream classe utilizzando il flusso e il livello di compressione specificati e, facoltativamente, lascia aperto il flusso.

DeflateStream(Stream, CompressionMode, Boolean)

Inizializza una nuova istanza della classe utilizzando il flusso e la DeflateStream modalità di compressione specificati e, facoltativamente, lascia aperto il flusso.

DeflateStream(Stream, ZLibCompressionOptions, Boolean)

Inizializza una nuova istanza della DeflateStream classe utilizzando il flusso specificato, le opzioni di compressione e, facoltativamente, lascia aperto il flusso.

Commenti

Se si usa la DeflateStream classe per comprimere un file di dimensioni superiori a 4 GB, verrà generata un'eccezione.

DeflateStream(Stream, CompressionLevel)

Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs

Inizializza una nuova istanza della DeflateStream classe utilizzando il flusso e il livello di compressione specificati.

public:
 DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionLevel compressionLevel);
public DeflateStream(System.IO.Stream stream, System.IO.Compression.CompressionLevel compressionLevel);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionLevel -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, compressionLevel As CompressionLevel)

Parametri

stream
Stream

Flusso in cui vengono scritti i dati compressi.

compressionLevel
CompressionLevel

Uno dei valori di enumerazione che indica se enfatizzare la velocità o l'efficienza di compressione durante la compressione dei dati nel flusso.

Eccezioni

stream è null.

Il flusso non supporta operazioni di scrittura, ad esempio la compressione. La CanWrite proprietà nell'oggetto stream è false.)

Commenti

Questo costruttore viene usato quando si desidera specificare se l'efficienza o la velocità della compressione sono più importanti per un'istanza della DeflateStream classe .

Questo overload del costruttore usa la modalità Compressdi compressione . Per impostare la modalità di compressione su un altro valore, utilizzare l'overload DeflateStream(Stream, CompressionMode) o DeflateStream(Stream, CompressionMode, Boolean) .

Examples

Nell'esempio seguente viene illustrato come impostare il livello di compressione durante la creazione di un DeflateStream oggetto e come lasciare aperto il flusso.

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

public static class FileCompressionLevelExample
{
    private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
    private const string OriginalFileName = "original.txt";
    private const string CompressedFileName = "compressed.dfl";

    public static void Run()
    {
        CreateFileToCompress();
        CompressFile();
        PrintResults();
        DeleteFiles();

        /*
         Output:
            The original file 'original.txt' is 445 bytes.
            The compressed file 'compressed.dfl' is 259 bytes.
         */
    }

    private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);

    private static void CompressFile()
    {
        using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
        using FileStream compressedFileStream = File.Create(CompressedFileName);
        using var compressor = new DeflateStream(compressedFileStream, CompressionLevel.Fastest);
        originalFileStream.CopyTo(compressor);
    }

    private static void PrintResults()
    {
        long originalSize = new FileInfo(OriginalFileName).Length;
        long compressedSize = new FileInfo(CompressedFileName).Length;

        Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes.");
        Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
    }

    private static void DeleteFiles()
    {
        File.Delete(OriginalFileName);
        File.Delete(CompressedFileName);
    }
}
Imports System.IO
Imports System.IO.Compression

Module FileCompressionLevelExample
    Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    Private Const OriginalFileName As String = "original.txt"
    Private Const CompressedFileName As String = "compressed.dfl"

    Sub Main()
        CreateFileToCompress()
        CompressFile()
        PrintResults()
        DeleteFiles()

        'Output:
        '   The original file 'original.txt' weighs 445 bytes.
        '   The compressed file 'compressed.dfl' weighs 259 bytes.
    End Sub

    Private Sub CreateFileToCompress()
        File.WriteAllText(OriginalFileName, Message)
    End Sub

    Private Sub CompressFile()
        Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
            Using compressedFileStream As FileStream = File.Create(CompressedFileName)
                Using compressor = New DeflateStream(compressedFileStream, CompressionLevel.Fastest)
                    originalFileStream.CopyTo(compressor)
                End Using
            End Using
        End Using
    End Sub

    Private Sub PrintResults()
        Dim originalSize As Long = New FileInfo(OriginalFileName).Length
        Dim compressedSize As Long = New FileInfo(CompressedFileName).Length

        Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes.")
        Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
    End Sub

    Private Sub DeleteFiles()
        File.Delete(OriginalFileName)
        File.Delete(CompressedFileName)
    End Sub
End Module

Si applica a

DeflateStream(Stream, CompressionMode)

Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs

Inizializza una nuova istanza della classe utilizzando il flusso e la DeflateStream modalità di compressione specificati.

public:
 DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionMode mode);
public DeflateStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionMode -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, mode As CompressionMode)

Parametri

stream
Stream

Flusso in cui vengono scritti i dati compressi o da cui leggere i dati da decomprimere.

mode
CompressionMode

Uno dei valori di enumerazione che indica se comprimere i dati nel flusso o decomprimere i dati dal flusso.

Eccezioni

stream è null.

mode non è un valore valido CompressionMode .

oppure

CompressionModeè e Compress è CanWritefalse .

oppure

CompressionModeè e Decompress è CanReadfalse .

Commenti

Per impostazione predefinita, DeflateStream è proprietario del flusso sottostante, quindi la chiusura del flusso chiude anche il flusso sottostante. Si noti che lo stato del flusso sottostante può influire sull'usabilità del flusso. Inoltre, non vengono eseguiti controlli espliciti, quindi non vengono generate eccezioni aggiuntive quando viene creata la nuova istanza.

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

L'uso della DeflateStream classe per comprimere un file di dimensioni superiori a 4 GB genera un'eccezione.

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

Examples

Nell'esempio seguente viene illustrato come usare la DeflateStream classe per comprimere e decomprimere un file.

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

public static class FileCompressionModeExample
{
    private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
    private const string OriginalFileName = "original.txt";
    private const string CompressedFileName = "compressed.dfl";
    private const string DecompressedFileName = "decompressed.txt";

    public static void Run()
    {
        CreateFileToCompress();
        CompressFile();
        DecompressFile();
        PrintResults();
        DeleteFiles();

        /*
         Output:

            The original file 'original.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

            The compressed file 'compressed.dfl' is 265 bytes.

            The decompressed file 'decompressed.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
         */
    }

    private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);

    private static void CompressFile()
    {
        using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
        using FileStream compressedFileStream = File.Create(CompressedFileName);
        using var compressor = new DeflateStream(compressedFileStream, CompressionMode.Compress);
        originalFileStream.CopyTo(compressor);
    }

    private static void DecompressFile()
    {
        using FileStream compressedFileStream = File.Open(CompressedFileName, FileMode.Open);
        using FileStream outputFileStream = File.Create(DecompressedFileName);
        using var decompressor = new DeflateStream(compressedFileStream, CompressionMode.Decompress);
        decompressor.CopyTo(outputFileStream);
    }

    private static void PrintResults()
    {
        long originalSize = new FileInfo(OriginalFileName).Length;
        long compressedSize = new FileInfo(CompressedFileName).Length;
        long decompressedSize = new FileInfo(DecompressedFileName).Length;

        Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes. Contents: \"{File.ReadAllText(OriginalFileName)}\"");
        Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
        Console.WriteLine($"The decompressed file '{DecompressedFileName}' is {decompressedSize} bytes. Contents: \"{File.ReadAllText(DecompressedFileName)}\"");
    }

    private static void DeleteFiles()
    {
        File.Delete(OriginalFileName);
        File.Delete(CompressedFileName);
        File.Delete(DecompressedFileName);
    }
}
Imports System.IO
Imports System.IO.Compression

Module FileCompressionModeExample
    Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    Private Const OriginalFileName As String = "original.txt"
    Private Const CompressedFileName As String = "compressed.dfl"
    Private Const DecompressedFileName As String = "decompressed.txt"

    Sub Main()
        CreateFileToCompress()
        CompressFile()
        DecompressFile()
        PrintResults()
        DeleteFiles()

        'Output:

        '   The original file 'original.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

        '   The compressed file 'compressed.dfl' weighs 265 bytes.

        '   The decompressed file 'decompressed.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

    End Sub

    Private Sub CreateFileToCompress()
        File.WriteAllText(OriginalFileName, Message)
    End Sub

    Private Sub CompressFile()
        Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
            Using compressedFileStream As FileStream = File.Create(CompressedFileName)
                Using compressor = New DeflateStream(compressedFileStream, CompressionMode.Compress)
                    originalFileStream.CopyTo(compressor)
                End Using
            End Using
        End Using
    End Sub

    Private Sub DecompressFile()
        Using compressedFileStream As FileStream = File.Open(CompressedFileName, FileMode.Open)
            Using outputFileStream As FileStream = File.Create(DecompressedFileName)
                Using decompressor = New DeflateStream(compressedFileStream, CompressionMode.Decompress)
                    decompressor.CopyTo(outputFileStream)
                End Using
            End Using
        End Using
    End Sub

    Private Sub PrintResults()
        Dim originalSize As Long = New FileInfo(OriginalFileName).Length
        Dim compressedSize As Long = New FileInfo(CompressedFileName).Length
        Dim decompressedSize As Long = New FileInfo(DecompressedFileName).Length

        Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes. Contents: ""{File.ReadAllText(OriginalFileName)}""")
        Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
        Console.WriteLine($"The decompressed file '{DecompressedFileName}' weighs {decompressedSize} bytes. Contents: ""{File.ReadAllText(DecompressedFileName)}""")
    End Sub

    Private Sub DeleteFiles()
        File.Delete(OriginalFileName)
        File.Delete(CompressedFileName)
        File.Delete(DecompressedFileName)
    End Sub
End Module

Si applica a

DeflateStream(Stream, CompressionLevel, Boolean)

Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs

Inizializza una nuova istanza della DeflateStream classe utilizzando il flusso e il livello di compressione specificati e, facoltativamente, lascia aperto il flusso.

public:
 DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionLevel compressionLevel, bool leaveOpen);
public DeflateStream(System.IO.Stream stream, System.IO.Compression.CompressionLevel compressionLevel, bool leaveOpen);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionLevel * bool -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, compressionLevel As CompressionLevel, leaveOpen As Boolean)

Parametri

stream
Stream

Flusso in cui vengono scritti i dati compressi.

compressionLevel
CompressionLevel

Uno dei valori di enumerazione che indica se enfatizzare la velocità o l'efficienza di compressione durante la compressione dei dati nel flusso.

leaveOpen
Boolean

true per lasciare aperto l'oggetto flusso dopo aver smesso l'oggetto DeflateStream ; in caso contrario, false.

Eccezioni

stream è null.

Il flusso non supporta operazioni di scrittura, ad esempio la compressione. La CanWrite proprietà nell'oggetto stream è false.)

Commenti

Questo costruttore viene usato quando si desidera specificare se l'efficienza o la velocità della compressione sono più importanti per un'istanza della DeflateStream classe e se lasciare aperto l'oggetto flusso dopo la eliminazione dell'oggetto DeflateStream .

Questo overload del costruttore usa la modalità Compressdi compressione . Per impostare la modalità di compressione su un altro valore, utilizzare l'overload DeflateStream(Stream, CompressionMode) o DeflateStream(Stream, CompressionMode, Boolean) .

Examples

Nell'esempio seguente viene illustrato come impostare il livello di compressione durante la creazione di un DeflateStream oggetto e come lasciare aperto il flusso.

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

public static class FileCompressionLevelExample
{
    private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
    private const string OriginalFileName = "original.txt";
    private const string CompressedFileName = "compressed.dfl";

    public static void Run()
    {
        CreateFileToCompress();
        CompressFile();
        PrintResults();
        DeleteFiles();

        /*
         Output:
            The original file 'original.txt' is 445 bytes.
            The compressed file 'compressed.dfl' is 259 bytes.
         */
    }

    private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);

    private static void CompressFile()
    {
        using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
        using FileStream compressedFileStream = File.Create(CompressedFileName);
        using var compressor = new DeflateStream(compressedFileStream, CompressionLevel.Fastest);
        originalFileStream.CopyTo(compressor);
    }

    private static void PrintResults()
    {
        long originalSize = new FileInfo(OriginalFileName).Length;
        long compressedSize = new FileInfo(CompressedFileName).Length;

        Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes.");
        Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
    }

    private static void DeleteFiles()
    {
        File.Delete(OriginalFileName);
        File.Delete(CompressedFileName);
    }
}
Imports System.IO
Imports System.IO.Compression

Module FileCompressionLevelExample
    Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    Private Const OriginalFileName As String = "original.txt"
    Private Const CompressedFileName As String = "compressed.dfl"

    Sub Main()
        CreateFileToCompress()
        CompressFile()
        PrintResults()
        DeleteFiles()

        'Output:
        '   The original file 'original.txt' weighs 445 bytes.
        '   The compressed file 'compressed.dfl' weighs 259 bytes.
    End Sub

    Private Sub CreateFileToCompress()
        File.WriteAllText(OriginalFileName, Message)
    End Sub

    Private Sub CompressFile()
        Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
            Using compressedFileStream As FileStream = File.Create(CompressedFileName)
                Using compressor = New DeflateStream(compressedFileStream, CompressionLevel.Fastest)
                    originalFileStream.CopyTo(compressor)
                End Using
            End Using
        End Using
    End Sub

    Private Sub PrintResults()
        Dim originalSize As Long = New FileInfo(OriginalFileName).Length
        Dim compressedSize As Long = New FileInfo(CompressedFileName).Length

        Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes.")
        Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
    End Sub

    Private Sub DeleteFiles()
        File.Delete(OriginalFileName)
        File.Delete(CompressedFileName)
    End Sub
End Module

Si applica a

DeflateStream(Stream, CompressionMode, Boolean)

Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs

Inizializza una nuova istanza della classe utilizzando il flusso e la DeflateStream modalità di compressione specificati e, facoltativamente, lascia aperto il flusso.

public:
 DeflateStream(System::IO::Stream ^ stream, System::IO::Compression::CompressionMode mode, bool leaveOpen);
public DeflateStream(System.IO.Stream stream, System.IO.Compression.CompressionMode mode, bool leaveOpen);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.CompressionMode * bool -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, mode As CompressionMode, leaveOpen As Boolean)

Parametri

stream
Stream

Flusso in cui vengono scritti i dati compressi o da cui leggere i dati da decomprimere.

mode
CompressionMode

Uno dei valori di enumerazione che indica se comprimere i dati nel flusso o decomprimere i dati dal flusso.

leaveOpen
Boolean

true per lasciare aperto il flusso dopo l'eliminazione dell'oggetto DeflateStream ; in caso contrario, false.

Eccezioni

stream è null.

mode non è un valore valido CompressionMode .

oppure

CompressionModeè e Compress è CanWritefalse .

oppure

CompressionModeè e Decompress è CanReadfalse .

Commenti

Per impostazione predefinita, DeflateStream è proprietario del flusso sottostante, quindi la chiusura del flusso chiude anche il flusso sottostante. Si noti che lo stato del flusso sottostante può influire sull'usabilità del flusso. Inoltre, non vengono eseguiti controlli espliciti, quindi non vengono generate eccezioni aggiuntive quando viene creata la nuova istanza.

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

L'uso della DeflateStream classe per comprimere un file di dimensioni superiori a 4 GB genera un'eccezione.

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

Examples

Nell'esempio seguente viene illustrato come usare la DeflateStream classe per comprimere e decomprimere un file.

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

public static class FileCompressionModeExample
{
    private const string Message = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
    private const string OriginalFileName = "original.txt";
    private const string CompressedFileName = "compressed.dfl";
    private const string DecompressedFileName = "decompressed.txt";

    public static void Run()
    {
        CreateFileToCompress();
        CompressFile();
        DecompressFile();
        PrintResults();
        DeleteFiles();

        /*
         Output:

            The original file 'original.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

            The compressed file 'compressed.dfl' is 265 bytes.

            The decompressed file 'decompressed.txt' is 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
         */
    }

    private static void CreateFileToCompress() => File.WriteAllText(OriginalFileName, Message);

    private static void CompressFile()
    {
        using FileStream originalFileStream = File.Open(OriginalFileName, FileMode.Open);
        using FileStream compressedFileStream = File.Create(CompressedFileName);
        using var compressor = new DeflateStream(compressedFileStream, CompressionMode.Compress);
        originalFileStream.CopyTo(compressor);
    }

    private static void DecompressFile()
    {
        using FileStream compressedFileStream = File.Open(CompressedFileName, FileMode.Open);
        using FileStream outputFileStream = File.Create(DecompressedFileName);
        using var decompressor = new DeflateStream(compressedFileStream, CompressionMode.Decompress);
        decompressor.CopyTo(outputFileStream);
    }

    private static void PrintResults()
    {
        long originalSize = new FileInfo(OriginalFileName).Length;
        long compressedSize = new FileInfo(CompressedFileName).Length;
        long decompressedSize = new FileInfo(DecompressedFileName).Length;

        Console.WriteLine($"The original file '{OriginalFileName}' is {originalSize} bytes. Contents: \"{File.ReadAllText(OriginalFileName)}\"");
        Console.WriteLine($"The compressed file '{CompressedFileName}' is {compressedSize} bytes.");
        Console.WriteLine($"The decompressed file '{DecompressedFileName}' is {decompressedSize} bytes. Contents: \"{File.ReadAllText(DecompressedFileName)}\"");
    }

    private static void DeleteFiles()
    {
        File.Delete(OriginalFileName);
        File.Delete(CompressedFileName);
        File.Delete(DecompressedFileName);
    }
}
Imports System.IO
Imports System.IO.Compression

Module FileCompressionModeExample
    Private Const Message As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
    Private Const OriginalFileName As String = "original.txt"
    Private Const CompressedFileName As String = "compressed.dfl"
    Private Const DecompressedFileName As String = "decompressed.txt"

    Sub Main()
        CreateFileToCompress()
        CompressFile()
        DecompressFile()
        PrintResults()
        DeleteFiles()

        'Output:

        '   The original file 'original.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

        '   The compressed file 'compressed.dfl' weighs 265 bytes.

        '   The decompressed file 'decompressed.txt' weighs 445 bytes. Contents: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

    End Sub

    Private Sub CreateFileToCompress()
        File.WriteAllText(OriginalFileName, Message)
    End Sub

    Private Sub CompressFile()
        Using originalFileStream As FileStream = File.Open(OriginalFileName, FileMode.Open)
            Using compressedFileStream As FileStream = File.Create(CompressedFileName)
                Using compressor = New DeflateStream(compressedFileStream, CompressionMode.Compress)
                    originalFileStream.CopyTo(compressor)
                End Using
            End Using
        End Using
    End Sub

    Private Sub DecompressFile()
        Using compressedFileStream As FileStream = File.Open(CompressedFileName, FileMode.Open)
            Using outputFileStream As FileStream = File.Create(DecompressedFileName)
                Using decompressor = New DeflateStream(compressedFileStream, CompressionMode.Decompress)
                    decompressor.CopyTo(outputFileStream)
                End Using
            End Using
        End Using
    End Sub

    Private Sub PrintResults()
        Dim originalSize As Long = New FileInfo(OriginalFileName).Length
        Dim compressedSize As Long = New FileInfo(CompressedFileName).Length
        Dim decompressedSize As Long = New FileInfo(DecompressedFileName).Length

        Console.WriteLine($"The original file '{OriginalFileName}' weighs {originalSize} bytes. Contents: ""{File.ReadAllText(OriginalFileName)}""")
        Console.WriteLine($"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes.")
        Console.WriteLine($"The decompressed file '{DecompressedFileName}' weighs {decompressedSize} bytes. Contents: ""{File.ReadAllText(DecompressedFileName)}""")
    End Sub

    Private Sub DeleteFiles()
        File.Delete(OriginalFileName)
        File.Delete(CompressedFileName)
        File.Delete(DecompressedFileName)
    End Sub
End Module

Si applica a

DeflateStream(Stream, ZLibCompressionOptions, Boolean)

Origine:
DeflateStream.cs
Origine:
DeflateStream.cs
Origine:
DeflateStream.cs

Inizializza una nuova istanza della DeflateStream classe utilizzando il flusso specificato, le opzioni di compressione e, facoltativamente, lascia aperto il flusso.

public DeflateStream(System.IO.Stream stream, System.IO.Compression.ZLibCompressionOptions compressionOptions, bool leaveOpen = false);
new System.IO.Compression.DeflateStream : System.IO.Stream * System.IO.Compression.ZLibCompressionOptions * bool -> System.IO.Compression.DeflateStream
Public Sub New (stream As Stream, compressionOptions As ZLibCompressionOptions, Optional leaveOpen As Boolean = false)

Parametri

stream
Stream

Flusso in cui vengono scritti i dati compressi.

compressionOptions
ZLibCompressionOptions

Opzioni per ottimizzare il flusso di compressione.

leaveOpen
Boolean

true per lasciare aperto l'oggetto flusso dopo l'eliminazione dell'oggetto DeflateStream ; in caso contrario, false

Eccezioni

stream o compressionOptions è null.

Si applica a