在读取 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
}
}
有一个选项可以遍历实际 reader 行中的所有字段
最后按分隔符增加长度(字段数 ==
分隔符的数量)。
我也有想法通过反射来计算解析对象上的字符
(从对象获取所有属性值)。
我认为这些选项不会有效。
提前致谢
执行此操作的基本方法如下:
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
}
}
我只想问你,在读取CSV文件的过程中,是否有可能得到文件中所有字符的个数?我不想将文件加载到内存中两次(一次用于解析,第二次用于计数)。
我需要解析 CSV 文件,但我还需要获取此文件中所有字符的数量(带分隔符)。有人知道如何以最有效的方式做到这一点吗?
using (TextReader stream = new StreamReader(file.OpenReadStream()))
{
CsvReader reader = new CsvReader(stream, GetCsvReaderOptions());
while (reader.Read())
{
//parsing
}
}
有一个选项可以遍历实际 reader 行中的所有字段 最后按分隔符增加长度(字段数 == 分隔符的数量)。
我也有想法通过反射来计算解析对象上的字符 (从对象获取所有属性值)。
我认为这些选项不会有效。
提前致谢
执行此操作的基本方法如下:
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
}
}