C# 使用C更改文件中的行尾最有效的方法是什么#
我有一个程序X,它接收windowsC# 使用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
\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存在。