-1

ちょっとした質問があります。ストリームの最後で一般的なバイナリ読み取りメソッドを返すものは何ですか? たとえば、Stream.ReadByte()単一の符号なしバイトを返すものがあります。ストリームの最後にいるとどうなりますか? NetworkStream でこのメソッドを使用している場合、違いはありますか? 助けてください。

4

2 に答える 2

1

基本クラスのドキュメントによると:

戻り値

タイプ:System.Int32
Int32にキャストされた符号なしバイト、またはストリームの最後にある場合は-1。

したがって、このメソッドはintを読み取り、それをより広い型にキャストして、ストリームの最後に追加の-1値を返すことができるようにします。

FileStreamとは両方ともNetworkStreamから派生していStreamます。これは、ロジックに違いがないことを意味します。

于 2012-11-02T18:44:46.447 に答える
0

ストリームを BinaryReder でラップして、さまざまなストリーム タイプで同じ動作をするようにします。最後まで読むと、リーダーは例外をスローします。

http://msdn.microsoft.com/en-us/library/system.io.endofstreamexception(v=vs.80).aspx

例外または -1?

それはあなたがストリームをどのように読むかによって異なります

using (var stream = new FileStream("c:\\smple.bin", FileMode.Open))
{
    ...
    stream.ReadByte(); // will return -1 when reading over the end
}

しかし、次のようにすると:

using (var stream = new FileStream("c:\\smple.bin", FileMode.Open))
using (var reader = new BinaryReader(stream))
{
    ... 
    reader.ReadByte(); // will throw an exception
} 
于 2012-11-02T18:51:03.640 に答える