c# - ReadLine() 与 Read() 有效获取 CR 和 LF?

标签 c# visual-studio-2010 io readline

我正在开发一个 C# 程序,以便在使用 SSIS 包导入之前确定多个包含 100,000 多行的大型文本文件中每一行的行长。在使用 SSIS 将它们导入我的数据库之前,我还将检查每一行的其他值以验证它们是否正确。

例如,我希望一行长度为 3000 个字符,然后是 3001 处的 CR 和 3002 处的 LF,因此总共有 3002 个字符。

当使用 ReadLine() 时,它读取 CR 或 LF 作为行尾,这样我就无法检查 CR 或 LF 字符。我一直在检查 3000 处的线的长度以确定长度是否正确。我刚刚遇到一个问题,文件在位置 3001 处有一个 LF,但缺少 CR。所以 ReadLine() 说它是 3000 个字符女巫是正确的,但它在我的 SSIS 包中会失败,因为它缺少 CR。

我已经验证 Read() 一次会到达每个字符 1,并且我可以确定每一行是否都有 CR 和 LF,但这似乎效率不高,而且当我遇到的某些文件超过 5,000,000 行时这看起来效率很低。然后,我还需要将每个字符添加到一个字符串中,或​​者使用 ReadBlock() 并将一个字符数组转换为一个字符串,以便我可以检查该行中的其他值。

有没有人想过一种有效的方法来检查给定线上的 CR 和 LF 以及其他值,而不浪费不必要的资源,并以相对及时的方式完成。

最佳答案

have verified that Read() will reach each char 1 at a time and I can determine if each line has a CR and LF but this seems rather unproductive

想想这个。您是否认为 ReadLine() 有魔杖,不必读取每个字符?

只需创建您自己的 ReadMyLine()。有些东西必须读取字符,不管那是你的代码还是库。 I/O 将由 Stream 和 Windows 缓冲。

关于c# - ReadLine() 与 Read() 有效获取 CR 和 LF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276997/

相关文章:

c# - 我们可以在代码隐藏中使用 WPF 绑定(bind)中的 Where 子句吗?

c# - 从收件箱中的文件夹获取邮件 - EWS

c# - 从 Javascript 设置 Viewstate 的值

c++ - Visual Studio 想要使用错误的平台工具集进行构建

c# - 根据下拉列表在 asp.net 中选择的选项从文件夹动态加载多个图像

go - readString 与 readLine

c# - 在不知道名称的情况下获取第一列的值

sql-server-2008 - 如何仅安装 SQL Server Management Studio 2008 组件

c - 我们如何通过键盘端口重新启动

Groovy:复制文件,同时转换行结尾