0

我有一个应用程序可以逐行读取一个巨大的文本文件(大约超过 100MB)。

由于应用程序读取文件需要很长时间,我想在其底部添加一个 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. 任何想法?

编辑:使用的框架是 .NET 2.0

4

1 回答 1

0

返回的字符串中的sr.ReadLine条带回车/换行符几个字符。
您需要计算返回的字符串中缺少但存在于整个文件长度中的这些字符。

于 2012-06-27T09:26:30.790 回答