【发布时间】:2012-08-03 11:59:19
【问题描述】:
我正在通过 FileStream 更改文件(这是一个非常大的文件,我只需要更改标题而不重写整个文件。
该文件可以有 Unix 或 Windows 换行符,对我来说知道哪一个很重要,这样我可以在更新文件时将正确的换行符写回文件中。
我可以编写一个简单的函数来使用 FileStream 以块的形式读取文件并检查换行符。
但是这个问题之前肯定已经解决了,如果不是在 C# 中,那么在 Win32 API 中?
检测文件换行样式最有效的方法是什么?
【问题讨论】:
-
不确定,因此有评论,但是否可以使用正则表达式,例如:
\r\n$?这将检查换行符是否以\r\n结尾。如果不是,那么它必须是 Unix 行。 -
不太可能,因为在 .Net 框架文件访问对象上使用任何“ReadLine”方法都会去除换行符。如果您不关心文件使用什么换行符样式,它们会很好。如果我将文件作为流读取,我可以执行您建议的操作(这基本上相当于我可能采用的方法..)
-
你能保证文件中的所有行结尾都是一致的吗?从技术上讲,在同一个文件中可以有不同的混合行结尾。
-
如果您只是阅读我建议使用
StreamReader.ReadLine()方法的数据。 MSDN 因为它可以处理行尾的所有变体。但这并不能解决将相同的结尾写回文件的问题。 :-( -
我很高兴只阅读前一两行来确定换行符。我正在替换文件上的标题,所以只要我得到第一个正确,我就不会损坏文件...
标签: c# windows file-io newline