计算已读取的实际字节数

Count actual bytes had been read

我正在解析一个大文件,我喜欢通过显示已读取的字节数来监视进程。 实际代码量很大,但这部分是我的计算方式。

StreamReader sr =  new StreamReader(FilePath);
        while ((line = sr.ReadLine()) != null )
        {
            //do parsing jobs

            byteCnt += Convert.ToUInt64( line.Length * sizeof(char) );
        }

 Console.WriteLine(String.Format("{0:n0}", byteCnt) + "  Bytes");

文件大小为 16.9 GB(18,186,477,492 字节)

但我的程序计数为 34,816,805,164 字节

怎么会这样?以及如何让这个数字更合理?

谢谢

sizeof(char) 在 C# 中是 2,因为它使用 unicode 编码。如果您的文件不是 unicode,这将不是一个准确的衡量标准。您可以改用例如

System.Text.ASCIIEncoding.ASCII.GetByteCount(line);
// or another example:
Encoding.UTF8.GetByteCount(line);

获取尺寸。您需要根据文件的编码选择合适的解决方案。