7

ファイルの最後にいることを確認する方法を知っている人はいますか? BinaryReader を使用して PeekChar を試しましたが、例外がスローされます。他の提案はありますか?

ありがとう。

4

5 に答える 5

11

から、StreamあなたRead(buffer, offset, count)が非肯定的な結果をPeek()得るなら、そしてあなたが否定的な結果を得るなら。

を使用するBinaryReader、ドキュメントPeekChar()はそれが負の値を返す必要があることを示唆しています。

戻り値

タイプ:System.Int32次に使用可能な文字、または使用可能な文字がなくなった場合、またはストリームがシークをサポートしていない場合は-1。

これは破損したストリームではありませんか?つまり、残りのデータは、指定さcharれたエンコーディングから完全なものを形成することはできませんか?

于 2011-02-16T12:30:08.257 に答える
2

ストリームがシークをサポートしている場合(BaseStream.CanSeekプロパティを使用してこれを確認)、次のようにBaseStreamのPositionプロパティを確認します。

if (myBinaryReader.BaseStream.CanSeek){
   bool atEnd = (myBinaryReader.BaseStream.Position == myBinaryReader.BaseStream.Length - 1)
}
于 2011-02-16T12:31:37.673 に答える
-1
While BinReader.PeekChar() > 0
{
...
}
于 2011-02-16T12:30:51.843 に答える