DeflateStream Klasa

Definicja

Zapewnia metody i właściwości służące do kompresowania i dekompresowania strumieni przy użyciu algorytmu Wklęśnięcie.Provides methods and properties for compressing and decompressing streams by using the Deflate algorithm.

public ref class DeflateStream : System::IO::Stream
public class DeflateStream : System.IO.Stream
type DeflateStream = class
    inherit Stream
Public Class DeflateStream
Inherits Stream
Dziedziczenie

Przykłady

Poniższy przykład pokazuje, DeflateStream jak używać klasy do kompresowania i dekompresowania katalogu plików.The following example shows how to use the DeflateStream class to compress and decompress a directory of files.

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);
                }
            }
        }
    }
}
Imports System.IO
Imports System.IO.Compression

Public Class Program
    Shared directoryPath As String = "c:\temp"
    Public Shared Sub Main()

        Dim directorySelected As New DirectoryInfo(directoryPath)
        Compress(directorySelected)


        For Each fileToDecompress As FileInfo In directorySelected.GetFiles("*.cmp")
            Decompress(fileToDecompress)
        Next
    End Sub

    Public Shared Sub Compress(directorySelected As DirectoryInfo)

        For Each file__1 As FileInfo In directorySelected.GetFiles("*.xml")
            Using originalFileStream As FileStream = file__1.OpenRead()
                If (File.GetAttributes(file__1.FullName) And FileAttributes.Hidden) <> FileAttributes.Hidden And file__1.Extension <> ".cmp" Then
                    Using compressedFileStream As FileStream = File.Create(file__1.FullName & ".cmp")
                        Using compressionStream As Compression.DeflateStream = New DeflateStream(compressedFileStream, CompressionMode.Compress)
                            originalFileStream.CopyTo(compressionStream)
                        End Using
                    End Using

                    Dim info As New FileInfo(directoryPath & "\" & file__1.Name & ".cmp")
                    Console.WriteLine("Compressed {0} from {1} to {2} bytes.", file__1.Name, file__1.Length, info.Length)
                End If
            End Using
        Next
    End Sub

    Public Shared Sub Decompress(fileToDecompress As FileInfo)
        Using originalFileStream As FileStream = fileToDecompress.OpenRead()
            Dim currentFileName As String = fileToDecompress.FullName
            Dim newFileName As String = currentFileName.Remove(currentFileName.Length - fileToDecompress.Extension.Length)

            Using decompressedFileStream As FileStream = File.Create(newFileName)
                Using decompressionStream As New DeflateStream(originalFileStream, CompressionMode.Decompress)
                    decompressionStream.CopyTo(decompressedFileStream)
                    Console.WriteLine("Decompressed: {0}", fileToDecompress.Name)
                End Using
            End Using
        End Using
    End Sub
End Class

Uwagi

Ta klasa reprezentuje algorytm Wklęśnięcie, który jest standardowym algorytmem kompresji plików bezstratnych i dekompresji.This class represents the Deflate algorithm, which is an industry-standard algorithm for lossless file compression and decompression. .NET Framework 4.5.NET Framework 4.5Począwszy odDeflateStream , Klasa używa biblioteki zlib.Starting with the .NET Framework 4.5.NET Framework 4.5, the DeflateStream class uses the zlib library. W związku z tym zapewnia lepszy algorytm kompresji i, w większości przypadków, mniejszy skompresowany plik niż zapewnia wcześniejszą wersję .NET Framework.As a result, it provides a better compression algorithm and, in most cases, a smaller compressed file than it provides in earlier versions of the .NET Framework.

Ta klasa nie udostępnia w sposób funkcjonalny funkcji dodawania plików do plików archiwów ZIP ani ich wyodrębniania.This class does not inherently provide functionality for adding files to or extracting files from zip archives. Aby móc korzystać z archiwów ZIP, ZipArchive Użyj ZipArchiveEntry klas i.To work with zip archives, use the ZipArchive and the ZipArchiveEntry classes.

Klasa używa tego samego algorytmu kompresji co format danych gzip używany GZipStream przez klasę. DeflateStreamThe DeflateStream class uses the same compression algorithm as the gzip data format used by the GZipStream class.

Funkcje kompresji w programie DeflateStream i GZipStream są dostępne jako strumień.The compression functionality in DeflateStream and GZipStream is exposed as a stream. Dane są odczytywane w oparciu o bajt po bajcie, więc nie można wykonać wielu przebiegów w celu określenia najlepszej metody kompresji całych plików lub dużych bloków danych.Data is read on a byte-by-byte basis, so it is not possible to perform multiple passes to determine the best method for compressing entire files or large blocks of data. Klasy DeflateStream iGZipStream najlepiej używać w odniesieniu do nieskompresowanych źródeł danych.The DeflateStream and GZipStream classes are best used on uncompressed sources of data. Jeśli dane źródłowe są już skompresowane, użycie tych klas może w rzeczywistości zwiększyć rozmiar strumienia.If the source data is already compressed, using these classes may actually increase the size of the stream.

Konstruktory

DeflateStream(Stream, CompressionLevel)

Inicjuje nowe wystąpienie DeflateStream klasy przy użyciu określonego strumienia i poziomu kompresji.Initializes a new instance of the DeflateStream class by using the specified stream and compression level.

DeflateStream(Stream, CompressionLevel, Boolean)

Inicjuje nowe wystąpienie DeflateStream klasy przy użyciu określonego strumienia i poziomu kompresji, opcjonalnie pozostawiając otwarcie strumienia.Initializes a new instance of the DeflateStream class by using the specified stream and compression level, and optionally leaves the stream open.

DeflateStream(Stream, CompressionMode)

Inicjuje nowe wystąpienie DeflateStream klasy przy użyciu określonego trybu strumienia i kompresji.Initializes a new instance of the DeflateStream class by using the specified stream and compression mode.

DeflateStream(Stream, CompressionMode, Boolean)

Inicjuje nowe wystąpienie DeflateStream klasy przy użyciu określonego trybu strumienia i kompresji, opcjonalnie pozostawiając otwarcie strumienia.Initializes a new instance of the DeflateStream class by using the specified stream and compression mode, and optionally leaves the stream open.

Właściwości

BaseStream

Pobiera odwołanie do źródłowego strumienia.Gets a reference to the underlying stream.

CanRead

Pobiera wartość wskazującą, czy strumień obsługuje odczytywanie podczas dekompresowania pliku.Gets a value indicating whether the stream supports reading while decompressing a file.

CanSeek

Pobiera wartość wskazującą, czy strumień obsługuje wyszukiwanie.Gets a value indicating whether the stream supports seeking.

CanTimeout

Pobiera wartość określającą, czy bieżący strumień może przekroczyć limit czasu.Gets a value that determines whether the current stream can time out.

(Odziedziczone po Stream)
CanWrite

Pobiera wartość wskazującą, czy strumień obsługuje zapisywanie.Gets a value indicating whether the stream supports writing.

Length

Ta właściwość nie jest obsługiwana i zawsze zgłasza NotSupportedException.This property is not supported and always throws a NotSupportedException.

Position

Ta właściwość nie jest obsługiwana i zawsze zgłasza NotSupportedException.This property is not supported and always throws a NotSupportedException.

ReadTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień będzie próbować odczytać przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to read before timing out.

(Odziedziczone po Stream)
WriteTimeout

Pobiera lub ustawia wartość (w milisekundach), która określa, jak długo strumień podejmie próbę zapisu przed upływem limitu czasu.Gets or sets a value, in milliseconds, that determines how long the stream will attempt to write before timing out.

(Odziedziczone po Stream)

Metody

BeginRead(Byte[], Int32, Int32, AsyncCallback, Object)

Rozpoczęcie asynchronicznej operacji odczytu.Begins an asynchronous read operation. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) metody).(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object)

Rozpoczyna asynchroniczne operacje zapisu.Begins an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) metody).(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Close()

Zamyka bieżący strumień i zwalnia wszystkie zasoby (takie jak gniazda i uchwyty plików) skojarzone z bieżącym strumieniem.Closes the current stream and releases any resources (such as sockets and file handles) associated with the current stream. Zamiast wywołania tej metody upewnij się, że strumień jest prawidłowo usunięty.Instead of calling this method, ensure that the stream is properly disposed.

(Odziedziczone po Stream)
CopyTo(Stream)

Odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyTo(Stream, Int32)

Odczytuje bajty z bieżącego strumienia Wklęśnięcie i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Reads the bytes from the current Deflate stream and writes them to another stream, using a specified buffer size.

CopyToAsync(Stream)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu.Asynchronously reads the bytes from the current stream and writes them to another stream.

(Odziedziczone po Stream)
CopyToAsync(Stream, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego tokenu anulowania.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified cancellation token.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32)

Asynchronicznie odczytuje bajty z bieżącego strumienia i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Asynchronously reads the bytes from the current stream and writes them to another stream, using a specified buffer size.

(Odziedziczone po Stream)
CopyToAsync(Stream, Int32, CancellationToken)

Asynchronicznie odczytuje bajty z bieżącego strumienia Wklęśnięcie i zapisuje je w innym strumieniu przy użyciu określonego rozmiaru buforu.Asynchronously reads the bytes from the current Deflate stream and writes them to another stream, using a specified buffer size.

CreateObjRef(Type)

Tworzy obiekt, który zawiera wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikacji z obiektem zdalnym.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Odziedziczone po MarshalByRefObject)
CreateWaitHandle()

WaitHandle Przydziela obiekt.Allocates a WaitHandle object.

(Odziedziczone po Stream)
Dispose()

Zwalnia wszystkie zasoby używane przez Streamprogram.Releases all resources used by the Stream.

(Odziedziczone po Stream)
Dispose(Boolean)

Zwalnia niezarządzane zasoby używane przez DeflateStream program i opcjonalnie zwalnia zarządzane zasoby.Releases the unmanaged resources used by the DeflateStream and optionally releases the managed resources.

DisposeAsync()

Asynchronicznie zwalnia niezarządzane zasoby używane przez DeflateStream.Asynchronously releases the unmanaged resources used by the DeflateStream.

EndRead(IAsyncResult)

Czeka na zakończenie oczekujących asynchronicznych operacji odczytu.Waits for the pending asynchronous read to complete. (Rozważ użycie ReadAsync(Byte[], Int32, Int32) metody).(Consider using the ReadAsync(Byte[], Int32, Int32) method instead.)

EndWrite(IAsyncResult)

Zamyka asynchroniczne operacje zapisu.Ends an asynchronous write operation. (Rozważ użycie WriteAsync(Byte[], Int32, Int32) metody).(Consider using the WriteAsync(Byte[], Int32, Int32) method instead.)

Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
Flush()

Bieżąca implementacja tej metody nie ma funkcji.The current implementation of this method has no functionality.

FlushAsync()

Asynchronicznie czyści wszystkie bufory dla tego strumienia i powoduje, że wszystkie buforowane dane są zapisywane na podstawowym urządzeniu.Asynchronously clears all buffers for this stream and causes any buffered data to be written to the underlying device.

(Odziedziczone po Stream)
FlushAsync(CancellationToken)

Asynchronicznie czyści wszystkie bufory dla tego strumienia Wklęśnięcie, powoduje, że wszystkie buforowane dane są zapisywane na podstawowym urządzeniu i monitoruje żądania anulowania.Asynchronously clears all buffers for this Deflate stream, causes any buffered data to be written to the underlying device, and monitors cancellation requests.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetLifetimeService()

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
GetType()

Type Pobiera bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
InitializeLifetimeService()

Uzyskuje obiekt usługi istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Odziedziczone po MarshalByRefObject)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Objectelementu.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy skróconą kopię bieżącego MarshalByRefObject obiektu.Creates a shallow copy of the current MarshalByRefObject object.

(Odziedziczone po MarshalByRefObject)
ObjectInvariant()

Zapewnia pomoc techniczną Contractdla programu.Provides support for a Contract.

(Odziedziczone po Stream)
Read(Byte[], Int32, Int32)

Odczytuje liczbę skompresowanych bajtów do określonej tablicy bajtów.Reads a number of decompressed bytes into the specified byte array.

Read(Span<Byte>)

Odczytuje sekwencję bajtów z bieżącego strumienia Wklęśnięcie do zakresu bajtów i przesuwa pozycję w strumieniu Wklęśnięcie przez liczbę odczytywanych bajtów.Reads a sequence of bytes from the current Deflate stream into a byte span and advances the position within the Deflate stream by the number of bytes read.

ReadAsync(Byte[], Int32, Int32)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia i przesuwa pozycję w strumieniu o liczbę odczytanych bajtów.Asynchronously reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read.

(Odziedziczone po Stream)
ReadAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia Wklęśnięcie, zapisuje je w tablicy bajtów, przesuwa pozycję w strumieniu Wklęśnięcie przez liczbę odczytanych bajtów i monitoruje żądania anulowania.Asynchronously reads a sequence of bytes from the current Deflate stream, writes them to a byte array, advances the position within the Deflate stream by the number of bytes read, and monitors cancellation requests.

ReadAsync(Memory<Byte>, CancellationToken)

Asynchronicznie odczytuje sekwencję bajtów z bieżącego strumienia Wklęśnięcie, zapisuje je w zakresie pamięci bajtowej, przesuwa pozycję w strumieniu Wklęśnięcie przez liczbę odczytanych bajtów i monitoruje żądania anulowania.Asynchronously reads a sequence of bytes from the current Deflate stream, writes them to a byte memory range, advances the position within the Deflate stream by the number of bytes read, and monitors cancellation requests.

ReadByte()

Odczytuje bajt ze strumienia Wklęśnięcie i przesuwa pozycję w strumieniu o jeden bajt lub zwraca wartość-1, jeśli na końcu strumienia Wklęśnięcie.Reads a byte from the Deflate stream and advances the position within the stream by one byte, or returns -1 if at the end of the Deflate stream.

Seek(Int64, SeekOrigin)

Ta operacja nie jest obsługiwana i zawsze zgłasza NotSupportedException.This operation is not supported and always throws a NotSupportedException.

SetLength(Int64)

Ta operacja nie jest obsługiwana i zawsze zgłasza NotSupportedException.This operation is not supported and always throws a NotSupportedException.

ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
Write(Byte[], Int32, Int32)

Zapisuje skompresowane bajty do strumienia źródłowego z określonej tablicy bajtów.Writes compressed bytes to the underlying stream from the specified byte array.

Write(ReadOnlySpan<Byte>)

Zapisuje sekwencję bajtów do bieżącego strumienia Wklęśnięcie i postępuje bieżącą pozycję w strumieniu Wklęśnięcie przez liczbę zapisanych bajtów.Writes a sequence of bytes to the current Deflate stream and advances the current position within this Deflate stream by the number of bytes written.

WriteAsync(Byte[], Int32, Int32)

Asynchronicznie zapisuje sekwencję bajtów do bieżącego strumienia i przesuwa bieżącą pozycję w tym strumieniu o liczbę zapisanych bajtów.Asynchronously writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written.

(Odziedziczone po Stream)
WriteAsync(Byte[], Int32, Int32, CancellationToken)

Asynchronicznie zapisuje skompresowane bajty do bazowego strumienia Wklęśnięcie z określonej tablicy bajtów.Asynchronously writes compressed bytes to the underlying Deflate stream from the specified byte array.

WriteAsync(ReadOnlyMemory<Byte>, CancellationToken)

Asynchronicznie zapisuje skompresowane bajty do bazowego strumienia Wklęśnięcie z określonego obszaru pamięci tylko do odczytu.Asynchronously writes compressed bytes to the underlying Deflate stream from the specified read-only memory region.

WriteByte(Byte)

Zapisuje bajty w bieżącym położeniu w strumieniu i przesuwa pozycję w strumieniu o jeden bajt.Writes a byte to the current position in the stream and advances the position within the stream by one byte.

(Odziedziczone po Stream)

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia wszystkie zasoby używane przez Streamprogram.Releases all resources used by the Stream.

(Odziedziczone po Stream)

Metody rozszerzania

AsInputStream(Stream)

Konwertuje zarządzany strumień w programie .NET dla aplikacji do sklepu Windows na strumień wejściowy w środowisko wykonawcze systemu Windows.Converts a managed stream in the .NET for Windows Store apps to an input stream in the Windows Runtime.

AsOutputStream(Stream)

Konwertuje zarządzany strumień w programie .NET dla aplikacji ze sklepu Windows do strumienia wyjściowego w środowisko wykonawcze systemu Windows.Converts a managed stream in the .NET for Windows Store apps to an output stream in the Windows Runtime.

AsRandomAccessStream(Stream)

Konwertuje określony strumień na strumień o dostępie losowym.Converts the specified stream to a random access stream.

Dotyczy