2013-10-12T01:25:15の更新内容

programming/netfx/stream/3_binaryreader_binarywriter/index.wiki.txt

current previous
302,7 302,7
 

        

        
 
(上記の例で使用している[[BitConverter.ToStringメソッド>programming/netfx/conversion/0_basetype#ByteArrayConversion_BitConverter]]はバイト配列を見やすい形式に変換するためのもので、ReadBytesメソッドを使った読み込み処理の本質とは無関係のものです)
(上記の例で使用している[[BitConverter.ToStringメソッド>programming/netfx/conversion/0_basetype#ByteArrayConversion_BitConverter]]はバイト配列を見やすい形式に変換するためのもので、ReadBytesメソッドを使った読み込み処理の本質とは無関係のものです)
 

        

        
~
ReadBytesメソッドでは、ストリームの残りバイト数よりも多いバイト数を読み込もうとした場合には''実際に読み込めた分のみが返されます''。 読み込み中にストリームの末尾に達した場合でもEndOfStreamExceptionはスローされません。 実際に読み込めたバイト数は返されるバイト配列の長さを調べることで知ることができます。 例えば、16バイト読み込もうとして実際には残り8バイトだった場合には、長さ8のバイト配列が返されます。 ストリームの末尾に達してそれ以上読み込めるデータがない場合、ReadBytesメソッドは長さ0のバイト配列を返します。
[[ReadInt32等のメソッド>#BinaryReader_ReadPrimitiveTypes]]と同様、ReadBytesメソッドでストリームの残りバイト数よりも多いバイト数を読み込もうとした場合には、例外&msdn(netfx,type,System.IO.EndOfStreamException){EndOfStreamException};がスローされます。
 

        

        
 
もうひとつ、バイト配列に読み込むメソッドとして&msdn(netfx,member,System.IO.BinaryReader.Read){Readメソッド};も用意されています。 こちらはReadBytesメソッドとは異なり、あらかじめ用意したバイト配列を指定することにより、読み込んだデータをその配列へ格納します。 Readメソッドは、[[Stream.Readメソッド>programming/netfx/stream/0_abstract#Stream.Read]]と同様に指定したバイト数の分だけ読み込みを試みますが、''指定したバイト数ちょうどのデータが一度に読み込まれるとは限りません''。 読み込み中にストリームの末尾に達した場合でもEndOfStreamExceptionはスローされません。 実際に読み込めたバイト数は戻り値で知ることができます。 ストリームの末尾に達していてそれ以上読み込めるデータがない場合、Readメソッドは0を返します。
もうひとつ、バイト配列に読み込むメソッドとして&msdn(netfx,member,System.IO.BinaryReader.Read){Readメソッド};も用意されています。 こちらはReadBytesメソッドとは異なり、あらかじめ用意したバイト配列を指定することにより、読み込んだデータをその配列へ格納します。 Readメソッドは、[[Stream.Readメソッド>programming/netfx/stream/0_abstract#Stream.Read]]と同様に指定したバイト数の分だけ読み込みを試みますが、''指定したバイト数ちょうどのデータが一度に読み込まれるとは限りません''。 読み込み中にストリームの末尾に達した場合でもEndOfStreamExceptionはスローされません。 実際に読み込めたバイト数は戻り値で知ることができます。 ストリームの末尾に達していてそれ以上読み込めるデータがない場合、Readメソッドは0を返します。