特定の文字の存在に基づいて大きなファイルから行数を計算しようとしていますが、StreamReader と ReadBlock を使用したいと考えています。以下は私のコードです。
protected virtual long CalculateRowCount(FileStream inStream, int bufferSize)
{
long rowCount=0;
String line;
inStream.Position = 0;
TextReader reader = new StreamReader(inStream);
char[] block = new char[4096];
const int blockSize = 4096;
int indexer = 0;
int charsRead = 0;
long numberOfLines = 0;
int count = 1;
do
{
charsRead = reader.ReadBlock(block, indexer, block.Length * count);
indexer += blockSize ;
numberOfLines = numberOfLines + string.Join("", block).Split(new string[] { "&ENDE" }, StringSplitOptions.None).Length;
count ++;
} while (charsRead == block.Length);//charsRead !=0
reader.Close();
fileRowCount = rowCount;
return rowCount;
}
しかし、私はエラーが発生します
オフセットと長さが配列の範囲外であるか、カウントがインデックスからソース コレクションの末尾までの要素数を超えています。
何が悪いのかわかりません...助けてもらえますか。ありがとうございます!