通过读取文件的行来确定文件的大小

时间:2012-06-27 08:50:30

标签: c# .net file file-io

我有一个应用程序,逐行读取一个巨大的文本文件(大约超过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

1 个答案:

答案 0 :(得分:0)

sr.ReadLine从返回的字符串中剥离回车/换行符号字符 您需要对返回的字符串中缺少的这些字符进行计数,但这些字符存在于整个文件长度中。