巨大なテキストファイル(約100MB以上)を1行ずつ読み取るアプリがあります。
アプリがファイルを読み取るのに非常に時間がかかるため、読み込みが終了するまでの残り時間を示すStatusStripProgressBarを下部に追加します。
ファイルの長さと読み取られている文字列の長さを比較しようとしましたが、同じ結果が得られません。文字列をバイトに変換しようとしましたが、それでも異なります。たとえば、次のようになります。
while (!sr.EndOfStream)
{
s = sr.ReadLine;
TotalStringSize += s.Length;
UTF8ToASCII += UTF8Encoding.ASCII.GetByteCount(s);
UTF8ToBigEndianUnicode += UTF8Encoding.BigEndianUnicode.GetByteCount(s);
UTF8ToDefault += UTF8Encoding.Default.GetByteCount(s);
UTF8ToUnicode += UTF8Encoding.Unicode.GetByteCount(s);
UTF8ToUTF32 += UTF8Encoding.UTF32.GetByteCount(s);
UTF8ToUTF7 += UTF8Encoding.UTF7.GetByteCount(s);
UTF7ToASCII = UTF7Encoding.ASCII.GetByteCount(s);
//
// ...
//
}
私が得る結果は、によって与えられる結果よりも高いか低いかのどちらかですSystem.IO.FileStream.Length
。何か案が?
編集:使用されるフレームワークは.NET2.0です