ReadLine()vs Read()有效获取CR和LF?

buz*_*jay 5 c# io readline visual-studio-2010

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

例如,我期望行长度为3000个字符,然后CR为3001,LF为3002,总共3002个字符.

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

我已经验证Read()将一次到达每个char 1,我可以确定每行是否有CR和LF,但这似乎相当无效,当我遇到的某些文件有超过5,000,000+行时,这似乎非常效率低下.我还需要将每个char添加到字符串中或使用ReadBlock()并将char数组转换为字符串,以便我可以检查该行中的其他值.

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

Hen*_*man 4

已验证 Read() 将一次到达每个字符 1,并且我可以确定每行是否有 CR 和 LF,但这似乎效率很低

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

只需创建您自己的 ReadMyLine() 即可。有些东西必须读取字符,无论那是您的代码还是库都没关系。I/O 将由 Stream 和 Windows 缓冲。