gpt4 book ai didi

c# - 如何检测文件是否有 Unix 换行符 (\n) 或 Windows 换行符 (\r\n)?

转载 作者:可可西里 更新时间:2023-11-01 12:48:53 27 4
gpt4 key购买 nike

我正在通过 FileStream 更改文件(这是一个非常大的文件,我只需要更改标题而不重写整个文件。

该文件可以有 Unix 或 Windows 换行符,知道哪一个对我来说很重要,这样我可以在更新文件时将正确的换行符写回文件。

我可以编写一个简单的函数来使用 FileStream 以 block 的形式读取文件并检查换行符。

但这个问题以前肯定已经解决了,如果不是在 C# 中,那么在 Win32 API 中?

检测文件换行样式的最有效方法是什么?

最佳答案

感谢大家的建议。我很惊讶没有找到易于重用的东西,所以我创建了一个简单的函数,我将其包含在此处。请注意,它只是找到第一个换行符(\n 或\r\n)并将其作为匹配项返回。足以满足我的需求,但可能不够稳健。

    public bool TryDetectNewLine(string path, out string newLine)
{
using (var fileStream = File.OpenRead(path))
{
char prevChar = '\0';

// Read the first 4000 characters to try and find a newline
for (int i = 0; i < 4000; i++)
{
int b;
if ((b = fileStream.ReadByte()) == -1) break;

char curChar = (char)b;

if (curChar == '\n')
{
newLine = prevChar == '\r' ? "\r\n" : "\n";
return true;
}

prevChar = curChar;
}

// Returning false means could not determine linefeed convention
newLine = Environment.NewLine;
return false;
}
}

关于c# - 如何检测文件是否有 Unix 换行符 (\n) 或 Windows 换行符 (\r\n)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829559/

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