在读取 CSV 期间计算文件中的所有字符

Count all characters in file during reading CSV

我只想问你,在读取CSV文件的过程中,是否有可能得到文件中所有字符的个数?我不想将文件加载到内存中两次(一次用于解析,第二次用于计数)。

我需要解析 CSV 文件,但我还需要获取此文件中所有字符的数量(带分隔符)。有人知道如何以最有效的方式做到这一点吗?

   using (TextReader stream = new StreamReader(file.OpenReadStream()))
   {
        CsvReader reader = new CsvReader(stream, GetCsvReaderOptions());
        while (reader.Read())
        {
             //parsing
        }
   }

我认为这些选项不会有效。

提前致谢

执行此操作的基本方法如下:

using (TextReader stream = new StreamReader(file.OpenReadStream()))
{
     var content = stream.ReadToEnd();
     var length = content.Length;
}

因此变量“length”将包含传递文件中所有符号的计数

您可以使用 Reader.Context.RawRecord 并删除行尾。 (假设你不想数那些)

using (TextReader stream = new StreamReader(file.OpenReadStream()))
{
    var count = 0;

    CsvReader reader = new CsvReader(stream, GetCsvReaderOptions());
    while (reader.Read())
    {
        count += reader.Context.RawRecord.Replace("\n", "").Replace("\r", "").Length;
        //parsing
    }
}