1. ホーム
  2. c#

[解決済み] StreamReaderを先頭に戻す

2023-06-18 11:40:11

質問

ファイルを一行ずつ読み込んでいるのですが、あるメソッドを呼び出して読み込みを再開したいのです。 Rewind() .

どのようにすれば、私の System.IO.StreamReader とその下にある System.IO.FileStream を使用して、ファイルの読み込みをやり直すことができますか?

私は賢い考えで FileStream.Seek(long, SeekOffset) を使ってファイルを移動することを思いつきましたが、この方法では、ファイルを囲む System.IO.StreamReader . 私は Close() を作成し、ストリームとリーダーの両方のリファレンスを再割り当てすることができますが、私はより良い方法があることを期待しています。

どのように解決するのですか?

あなたのように、ストリーム上でシークし、次に DiscardBufferedData の上で StreamReader . ドキュメンテーション ここで :

編集:コード例を追加しました。

Stream s = new MemoryStream();
StreamReader sr = new StreamReader(s);
// later... after we read stuff
s.Position = 0;
sr.DiscardBufferedData();        // reader now reading from position 0