C# 使用C更改文件中的行尾最有效的方法是什么#

C# 使用C更改文件中的行尾最有效的方法是什么#,c#,file-io,C#,File Io,我有一个程序X,它接收windows\r\n({CR}{LF})行结尾的文件。当提供的文件具有unix文件结尾时,程序会中断\n({LF}) 我想创建一个适配器,它将处理输入文件,并向程序X提供一个带有windows行结尾的输出文件 我尝试过的 使用StreamReader 使用StreamWriter将每一行写入临时文件 删除原始文件 将临时文件复制为原始文件 删除临时文件 代码: public void ShouldConvertFile() { using (var reader

我有一个程序X,它接收windows
\r\n({CR}{LF})
行结尾的文件。当提供的文件具有unix文件结尾时,程序会中断
\n({LF})

我想创建一个适配器,它将处理输入文件,并向程序X提供一个带有windows行结尾的输出文件

我尝试过的

  • 使用
    StreamReader
  • 使用
    StreamWriter
    将每一行写入临时文件
  • 删除原始文件
  • 将临时文件复制为原始文件
  • 删除临时文件
  • 代码:

    public void ShouldConvertFile()
    {
        using (var reader = 
               new StreamReader(new FileStream(SampleFileName, FileMode.Open)))
        {
            if (File.Exists(SampleTemporaryFileName))
                File.Delete(SampleTemporaryFileName);
    
            using (var writer = new StreamWriter(
                      new FileStream(SampleTemporaryFileName, FileMode.Create)))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                    writer.WriteLine(line);
            }
        }
    
        if (File.Exists(SampleFileName))
            File.Delete(SampleFileName);
    
        File.Copy(SampleTemporaryFileName, SampleFileName);
        File.Delete(SampleTemporaryFileName);
    }
    
    有没有更快/更好/更干净的方法可以实现这一点?

    更干净?也许这是:

    File.WriteAllLines("output.txt", File.ReadLines("input.txt"));
    
    可能不会明显更快或更慢

    File.WriteAllLines("output.txt", File.ReadLines("input.txt"));
    
    清洁工?也许…更多的内存使用?明确地说-对于大文件,这段代码可能会适得其反(首先执行ReadLines,一次读取整个文件!)。。。。 (本可以发表评论,但由于某些原因不能)

    问候 约翰尼斯

    附言:对不起,我错了! ReadLines和WriteAlline在IEnumerable上工作,因此很懒


    p.p.S.:如果您使用的是
    文件,ReadAllLines
    将加载整个文件。您是正确的。ReadLines甚至不存在于.NET3.5中-只有ReadAllLines存在。