gpt4 book ai didi

C# Streamreader - 仅在 {CR}{LF} 处中断

转载 作者:太空宇宙 更新时间:2023-11-03 18:24:35 25 4
gpt4 key购买 nike

在执行复杂的 SSIS 插入包之前,我正在尝试计算文本文件中的行数(以与控制文件进行比较)。

目前我使用的是 StreamReader,它用嵌入新行的 {LF} 换行,而 SSIS 使用的是 {CR}{LF}(正确),因此计数没有统计。

有谁知道执行此操作的替代方法,我可以仅根据 {CR}{LF} 换行符计算文件中的行数?

提前致谢

最佳答案

遍历文件并计算 CRLF 的数量。

非常简单的实现:

public int CountLines(Stream stream, Encoding encoding)
{
int cur, prev = -1, lines = 0;
using (var sr = new StreamReader(stream, encoding, false, 4096, true))
{
while ((cur = sr.Read()) != -1)
{
if (prev == '\r' && cur == '\n')
lines++;

prev = cur;
}
}

//Empty stream will result in 0 lines, any content would result in at least one line
if (prev != -1)
lines++;

return lines;
}

示例用法:

using(var s = File.OpenRead(@"<your_file_path>"))
Console.WriteLine("Found {0} lines", CountLines(s, Encoding.Default));

其实就是一个find substring in string任务。可以使用更通用的算法。

关于C# Streamreader - 仅在 {CR}{LF} 处中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com