1

私はStreamReader大きなテキストファイル(〜300 MB)で を使用しており、ループで ReadLine() を呼び出すと、最終的に奇妙な がスローされますArgumentOutOfRangeException:

Index and count must refer to a location within the buffer.
Parameter name: bytes

スタックトレースは次のとおりです。

at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount,
Char[] chars, Int32 charIndex, Boolean flush)
at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount,
Char[] chars, Int32 charIndex)
at System.IO.StreamReader.ReadBuffer()
at System.IO.StreamReader.ReadLine()
....

これは奇妙なメモリエラーですか?投げないOutOfMemoryExceptionので少し迷っています。2000行目あたりで発生します。その時までに、ReadLine() が成功したとしても、他の場所で奇妙な例外をスローし始めます。おそらくどこかでメモリ リークが発生していると思われますが、特定の箇所ReadLine()StreamReader確認すべき箇所はありますか?

テキスト ファイルの各行の長さは、正確に 24 文字です。

4

1 に答える 1

1

問題が StremReader.ReadLine() に固有の場合は、次の可能性があります。

  • 次の行の文字数が Int32.MaxValue より大きい
  • StremReader コンストラクターに渡したバッファーが小さすぎます
于 2013-03-05T10:47:55.073 に答える