计算已读取的实际字节数
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);
获取尺寸。您需要根据文件的编码选择合适的解决方案。
我正在解析一个大文件,我喜欢通过显示已读取的字节数来监视进程。 实际代码量很大,但这部分是我的计算方式。
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);
获取尺寸。您需要根据文件的编码选择合适的解决方案。