GZipStream.Read メソッド

定義

オーバーロード

Read(Span<Byte>)

現在の GZip ストリームからバイト スパンにバイト シーケンスを読み取り、読み取られたバイト数だけ GZip ストリーム内の位置を進めます。

Read(Byte[], Int32, Int32)

圧縮解除されたバイト数を、指定したバイト配列に読み取ります。

Read(Span<Byte>)

現在の GZip ストリームからバイト スパンにバイト シーケンスを読み取り、読み取られたバイト数だけ GZip ストリーム内の位置を進めます。

public:
 override int Read(Span<System::Byte> buffer);
public override int Read (Span<byte> buffer);
override this.Read : Span<byte> -> int
Public Overrides Function Read (buffer As Span(Of Byte)) As Integer

パラメーター

buffer
Span<Byte>

メモリの領域。 このメソッドが戻ると、この領域のコンテンツは現在のソースから読み取られたバイトに置き換えられます。

戻り値

Int32

バッファーに読み取られた合計バイト数。 要求しただけのバイト数を読み取ることができなかった場合、この値はバッファーに割り当てられているバイト数より小さくなります。ストリームの末尾に到達した場合は 0 (ゼロ) になることがあります。

注釈

プロパティを CanRead 使用して、現在のインスタンスが読み取りをサポートするかどうかを判断します。 メソッドを ReadAsync 使用して、現在のストリームから非同期的に読み取ります。

このメソッドは、現在のストリームから最大バイト buffer.Length 数を読み取り、 に格納します buffer 。 GZip ストリーム内の現在の位置は、読み取ったバイト数で進みます。ただし、例外が発生した場合、GZip ストリーム内の現在の位置は変更されません。 このメソッドは、データが使用できない場合に、少なくとも 1 バイトのデータが読み取れるまでブロックされます。 Read は、ストリームにこれ以上データが含まれており、それ以上のデータ (閉じたソケットやファイルの末尾など) が必要ない場合にのみ、0 を返します。 メソッドは、ストリームの末尾に到達していない場合でも、要求されたバイト数よりも少ないバイト数を返します。

プリミティブ データ BinaryReader 型を読み取る場合に使用します。

適用対象

Read(Byte[], Int32, Int32)

圧縮解除されたバイト数を、指定したバイト配列に読み取ります。

public:
 override int Read(cli::array <System::Byte> ^ array, int offset, int count);
public:
 override int Read(cli::array <System::Byte> ^ buffer, int offset, int count);
public override int Read (byte[] array, int offset, int count);
public override int Read (byte[] buffer, int offset, int count);
override this.Read : byte[] * int * int -> int
override this.Read : byte[] * int * int -> int
Public Overrides Function Read (array As Byte(), offset As Integer, count As Integer) As Integer
Public Overrides Function Read (buffer As Byte(), offset As Integer, count As Integer) As Integer

パラメーター

arraybuffer
Byte[]

圧縮解除されたバイトを格納するために使用する配列。

offset
Int32

読み取られるバイトが配置される array 内のバイト オフセット。

count
Int32

読み取られる、圧縮解除されたバイトの最大数。

戻り値

Int32

圧縮解除されバイト配列に読み取られたバイト数。 既にストリームの末尾に到達している場合は、ゼロまたは読み取られたバイト数が返されます。

例外

arraynullです。

オブジェクトが作成されたとき、CompressionMode 値が Compress でした。

  • または - 基になるストリームが読み取りをサポートしていません。

offset または count が 0 未満です。

  • または - array の長さからインデックスの開始点を引いた値が count 未満です。

データ形式が無効です。

ストリームは閉じられています。

次の例は、 メソッドと メソッドを使用してバイトを圧縮および圧縮解除 Read する方法 Write を示しています。

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

namespace ExampleConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            UnicodeEncoding uniEncode = new UnicodeEncoding();

            byte[] bytesToCompress = uniEncode.GetBytes("example text to compress and decompress");
            Console.WriteLine("starting with: " + uniEncode.GetString(bytesToCompress));

            using (FileStream fileToCompress = File.Create("examplefile.gz"))
            {
                using (GZipStream compressionStream = new GZipStream(fileToCompress, CompressionMode.Compress))
                {
                    compressionStream.Write(bytesToCompress, 0, bytesToCompress.Length);
                }
            }

            byte[] decompressedBytes = new byte[bytesToCompress.Length];
            using (FileStream fileToDecompress = File.Open("examplefile.gz", FileMode.Open))
            {
                using (GZipStream decompressionStream = new GZipStream(fileToDecompress, CompressionMode.Decompress))
                {
                    decompressionStream.Read(decompressedBytes, 0, bytesToCompress.Length);
                }
            }

            Console.WriteLine("ending with: " + uniEncode.GetString(decompressedBytes));
        }
    }
}
Imports System.IO
Imports System.IO.Compression
Imports System.Text

Module Module1

    Sub Main()
        Dim uniEncode As UnicodeEncoding = New UnicodeEncoding()

        Dim bytesToCompress = uniEncode.GetBytes("example text to compress and decompress")
        Console.WriteLine("starting with: " + uniEncode.GetString(bytesToCompress))

        Using fileToCompress As FileStream = File.Create("examplefile.gz")
            Using compressionStream As GZipStream = New GZipStream(fileToCompress, CompressionMode.Compress)
                compressionStream.Write(bytesToCompress, 0, bytesToCompress.Length)
            End Using
        End Using

        Dim decompressedBytes(bytesToCompress.Length - 1) As Byte
        Using fileToDecompress As FileStream = File.Open("examplefile.gz", FileMode.Open)
            Using decompressionStream As GZipStream = New GZipStream(fileToDecompress, CompressionMode.Decompress)
                decompressionStream.Read(decompressedBytes, 0, bytesToCompress.Length)
            End Using
        End Using

        Console.WriteLine("ending with: " + uniEncode.GetString(decompressedBytes))
    End Sub
End Module

注釈

データが無効な形式で見つかった場合は、最後の InvalidDataException 操作の 1 つとして がスローされます。 循環冗長チェック (CRC) は、このメソッドの最後の操作の 1 つとして実行されます。

適用対象