GZipStream コンストラクター

定義

GZipStream クラスの新しいインスタンスを初期化します。

オーバーロード

GZipStream(Stream, CompressionLevel)

指定したストリームと圧縮レベルを使用して、GZipStream クラスの新しいインスタンスを初期化します。

GZipStream(Stream, CompressionMode)

指定したストリームと圧縮モードを使用して、GZipStream クラスの新しいインスタンスを初期化します。

GZipStream(Stream, CompressionLevel, Boolean)

指定したストリームと圧縮レベルを使用して GZipStream クラスの新しいインスタンスを初期化し、必要に応じて、ストリームを開いたままにします。

GZipStream(Stream, CompressionMode, Boolean)

指定したストリームと圧縮モードを使用して GZipStream クラスの新しいインスタンスを初期化し、必要に応じて、ストリームを開いたままにします。

GZipStream(Stream, CompressionLevel)

ソース:
GZipStream.cs
ソース:
GZipStream.cs
ソース:
GZipStream.cs

指定したストリームと圧縮レベルを使用して、GZipStream クラスの新しいインスタンスを初期化します。

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

パラメーター

stream
Stream

圧縮データの書き込み先のストリーム。

compressionLevel
CompressionLevel

ストリームにデータを圧縮するときに速度と圧縮効率のどちらを強調するかを示す列挙値の 1 つ。

例外

streamnullです。

ストリームは圧縮などの書き込み操作をサポートしません (ストリーム オブジェクトの CanWrite プロパティは false です)。

注釈

このコンストラクターは、 クラスのインスタンスで圧縮効率または速度がより重要かどうかを指定する場合に GZipStream 使用します。

このコンストラクター オーバーロードでは、圧縮モード Compressが使用されます。 圧縮モードを別の値に設定するには、 または GZipStream(Stream, CompressionMode, Boolean) オーバーロードを使用しますGZipStream(Stream, CompressionMode)

適用対象

GZipStream(Stream, CompressionMode)

ソース:
GZipStream.cs
ソース:
GZipStream.cs
ソース:
GZipStream.cs

指定したストリームと圧縮モードを使用して、GZipStream クラスの新しいインスタンスを初期化します。

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

パラメーター

stream
Stream

圧縮データの書き込み先のストリーム、または圧縮解除するデータの読み取り元のストリーム。

mode
CompressionMode

ストリームにデータを圧縮するか、ストリームからデータを圧縮解除するかを示す列挙値の 1 つ。

例外

streamnullです。

mode が有効な CompressionMode 列挙値ではありません。

- または -

CompressionModeCompress で、CanWritefalse です。

- または -

CompressionModeDecompress で、CanReadfalse です。

次の例は、オブジェクトの作成時に圧縮モードを設定する方法を GZipStream 示しています。

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

public 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.gz";
    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.gz' is 283 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 GZipStream(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 GZipStream(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);
    }
}
open System.IO
open System.IO.Compression

let 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."

let OriginalFileName = "original.txt"
let CompressedFileName = "compressed.gz"
let DecompressedFileName = "decompressed.txt"

let createFileToCompress () =
    File.WriteAllText(OriginalFileName, message)

let compressFile () =
    use originalFileStream = File.Open(OriginalFileName, FileMode.Open)
    use compressedFileStream = File.Create CompressedFileName
    use compressor = new GZipStream(compressedFileStream, CompressionMode.Compress)
    originalFileStream.CopyTo compressor

let decompressFile () =
    use compressedFileStream = File.Open(CompressedFileName, FileMode.Open)
    use outputFileStream = File.Create DecompressedFileName
    use decompressor = new GZipStream(compressedFileStream, CompressionMode.Decompress)
    decompressor.CopyTo outputFileStream

let printResults () =
    let originalSize = FileInfo(OriginalFileName).Length
    let compressedSize = FileInfo(CompressedFileName).Length
    let decompressedSize = FileInfo(DecompressedFileName).Length

    printfn
        $"The original file '{OriginalFileName}' weighs {originalSize} bytes. Contents: \"{File.ReadAllText OriginalFileName}\""

    printfn $"The compressed file '{CompressedFileName}' weighs {compressedSize} bytes."

    printfn
        $"The decompressed file '{DecompressedFileName}' weighs {decompressedSize} bytes. Contents: \"{File.ReadAllText DecompressedFileName}\""

let deleteFiles () =
    File.Delete OriginalFileName
    File.Delete CompressedFileName
    File.Delete DecompressedFileName

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.gz' weighs 283 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."
Imports System
Imports System.IO
Imports System.IO.Compression

Public Class 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.gz"
    Private Const DecompressedFileName As String = "decompressed.txt"

    Public Shared 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.gz' weighs 283 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 Shared Sub CreateFileToCompress()
        File.WriteAllText(OriginalFileName, Message)
    End Sub

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

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

    Private Shared 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 Shared Sub DeleteFiles()
        File.Delete(OriginalFileName)
        File.Delete(CompressedFileName)
        File.Delete(DecompressedFileName)
    End Sub
End Class

注釈

既定では、 GZipStream は基になるストリームを所有しているため、 パラメーターを stream 閉じると、基になるストリームも閉じます。 基になるストリームの状態は、ストリームの使いやすさに影響を与える可能性があることに注意してください。 また、明示的なチェックは実行されないため、新しいインスタンスの作成時に追加の例外はスローされません。

クラスのGZipStreamインスタンスが と等しいCompressパラメーターを使用してmode作成され、それ以上のアクションが発生しない場合、ストリームは有効な空の圧縮ファイルとして表示されます。

既定では、圧縮モードが の場合、圧縮レベルは に Optimal 設定されます Compress

適用対象

GZipStream(Stream, CompressionLevel, Boolean)

ソース:
GZipStream.cs
ソース:
GZipStream.cs
ソース:
GZipStream.cs

指定したストリームと圧縮レベルを使用して GZipStream クラスの新しいインスタンスを初期化し、必要に応じて、ストリームを開いたままにします。

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

パラメーター

stream
Stream

圧縮データの書き込み先のストリーム。

compressionLevel
CompressionLevel

ストリームにデータを圧縮するときに速度と圧縮効率のどちらを強調するかを示す列挙値の 1 つ。

leaveOpen
Boolean

GZipStream オブジェクトを破棄した後にストリーム オブジェクトを開いたままにする場合は true、それ以外の場合は false

例外

streamnullです。

ストリームは圧縮などの書き込み操作をサポートしません (ストリーム オブジェクトの CanWrite プロパティは false です)。

次の例は、オブジェクトの作成時に圧縮レベルを設定する GZipStream 方法と、ストリームを開いたままにする方法を示しています。

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

public static class MemoryWriteReadExample
{
    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 static readonly byte[] s_messageBytes = Encoding.ASCII.GetBytes(Message);

    public static void Run()
    {
        Console.WriteLine($"The original string length is {s_messageBytes.Length} bytes.");
        using var stream = new MemoryStream();
        CompressBytesToStream(stream);
        Console.WriteLine($"The compressed stream length is {stream.Length} bytes.");
        int decompressedLength = DecompressStreamToBytes(stream);
        Console.WriteLine($"The decompressed string length is {decompressedLength} bytes, same as the original length.");
        /*
         Output:
            The original string length is 445 bytes.
            The compressed stream length is 282 bytes.
            The decompressed string length is 445 bytes, same as the original length.
        */
    }

    private static void CompressBytesToStream(Stream stream)
    {
        using var compressor = new GZipStream(stream, CompressionLevel.SmallestSize, leaveOpen: true);
        compressor.Write(s_messageBytes, 0, s_messageBytes.Length);
    }

    private static int DecompressStreamToBytes(Stream stream)
    {
        stream.Position = 0;
        int bufferSize = 512;
        byte[] buffer = new byte[bufferSize];
        using var gzipStream = new GZipStream(stream, CompressionMode.Decompress);

        int totalRead = 0;
        while (totalRead < buffer.Length)
        {
            int bytesRead = gzipStream.Read(buffer.AsSpan(totalRead));
            if (bytesRead == 0) break;
            totalRead += bytesRead;
        }

        return totalRead;
    }
}
open System.IO
open System.IO.Compression
open System.Text

let 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."

let s_messageBytes = Encoding.ASCII.GetBytes message

let compressBytesToStream stream =
    use compressor =
        new GZipStream(stream, CompressionLevel.SmallestSize, leaveOpen = true)

    compressor.Write(s_messageBytes, 0, s_messageBytes.Length)

let decompressStreamToBytes (stream: Stream) =
    stream.Position <- 0
    let bufferSize = 512
    let decompressedBytes = Array.zeroCreate bufferSize
    use decompressor = new GZipStream(stream, CompressionMode.Decompress)
    decompressor.Read(decompressedBytes, 0, bufferSize)

[<EntryPoint>]
let main _ =
    printfn $"The original string length is {s_messageBytes.Length} bytes."
    use stream = new MemoryStream()
    compressBytesToStream stream
    printfn $"The compressed stream length is {stream.Length} bytes."
    let decompressedLength = decompressStreamToBytes stream
    printfn $"The decompressed string length is {decompressedLength} bytes, same as the original length."
    0

// Output:
//     The original string length is 445 bytes.
//     The compressed stream length is 282 bytes.
//     The decompressed string length is 445 bytes, same as the original length.
Imports System.IO
Imports System.IO.Compression
Imports System.Text

Module MemoryWriteReadExample
    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 ReadOnly s_messageBytes As Byte() = Encoding.ASCII.GetBytes(Message)

    Sub Main()
        Console.WriteLine($"The original string length is {s_messageBytes.Length} bytes.")

        Using stream = New MemoryStream()
            CompressBytesToStream(stream)
            Console.WriteLine($"The compressed stream length is {stream.Length} bytes.")
            Dim decompressedLength As Integer = DecompressStreamToBytes(stream)
            Console.WriteLine($"The decompressed string length is {decompressedLength} bytes, same as the original length.")
        End Using
        ' Output:
        '   The original string length is 445 bytes.
        '   The compressed stream length is 282 bytes.
        '   The decompressed string length is 445 bytes, same as the original length.
    End Sub

    Private Sub CompressBytesToStream(ByVal stream As Stream)
        Using compressor = New GZipStream(stream, CompressionLevel.SmallestSize, leaveOpen:=True)
            compressor.Write(s_messageBytes, 0, s_messageBytes.Length)
        End Using
    End Sub

    Private Function DecompressStreamToBytes(ByVal stream As Stream) As Integer
        stream.Position = 0
        Dim bufferSize As Integer = 512
        Dim decompressedBytes As Byte() = New Byte(bufferSize - 1) {}
        Using decompressor = New GZipStream(stream, CompressionMode.Decompress)
            Dim length As Integer = decompressor.Read(decompressedBytes, 0, bufferSize)
            Return length
        End Using
    End Function
End Module

注釈

このコンストラクターは、クラスのインスタンス GZipStream で圧縮効率または速度がより重要かどうか、およびオブジェクトを破棄した後にストリーム オブジェクトを開いたままにするかどうかを指定する場合に GZipStream 使用します。

このコンストラクター オーバーロードでは、圧縮モード Compressが使用されます。 圧縮モードを別の値に設定するには、 または GZipStream(Stream, CompressionMode, Boolean) オーバーロードを使用しますGZipStream(Stream, CompressionMode)

適用対象

GZipStream(Stream, CompressionMode, Boolean)

ソース:
GZipStream.cs
ソース:
GZipStream.cs
ソース:
GZipStream.cs

指定したストリームと圧縮モードを使用して GZipStream クラスの新しいインスタンスを初期化し、必要に応じて、ストリームを開いたままにします。

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

パラメーター

stream
Stream

圧縮データの書き込み先のストリーム、または圧縮解除するデータの読み取り元のストリーム。

mode
CompressionMode

ストリームにデータを圧縮するか、ストリームからデータを圧縮解除するかを示す列挙値の 1 つ。

leaveOpen
Boolean

GZipStream オブジェクトを破棄した後にストリームを開いたままにする場合は true、それ以外の場合は false

例外

streamnullです。

mode は有効な CompressionMode 値ではありません。

- または -

CompressionModeCompress で、CanWritefalse です。

- または -

CompressionModeDecompress で、CanReadfalse です。

注釈

既定では、 GZipStream は基になるストリームを所有しているため、 パラメーターを stream 閉じると、基になるストリームも閉じます。 基になるストリームの状態は、ストリームの使いやすさに影響する可能性があります。 また、明示的なチェックは実行されないため、新しいインスタンスの作成時に追加の例外はスローされません。

クラスのGZipStreamインスタンスが と等しいCompressパラメーターを使用してmode作成され、それ以上のアクションが発生しない場合、ストリームは有効な空の圧縮ファイルとして表示されます。

既定では、圧縮モードが の場合、圧縮レベルは に Optimal 設定されます Compress

適用対象