我有一个应用程序,逐行读取一个巨大的文本文件(大约超过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
答案 0 :(得分:0)
sr.ReadLine
从返回的字符串中剥离回车/换行符号字符
您需要对返回的字符串中缺少的这些字符进行计数,但这些字符存在于整个文件长度中。