我有一个程序X,它接收带有\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);
}
是否有更快/更好/更清洁的方法可以实现这一目标?
答案 0 :(得分:7)
清洁?也许这个:
File.WriteAllLines("output.txt", File.ReadLines("input.txt"));
可能没有明显更快或更慢。
答案 1 :(得分:0)
File.WriteAllLines("output.txt", File.ReadLines("input.txt"));
清洁?也许......更多的RAM使用?肯定 - 这段代码可以适用于大文件(首先执行ReadLines,一次读取整个文件!).... (会发表评论,但出于某种原因不能)
此致 约翰内斯
P.S。:对不起 - 我错了! ReadLines和WriteAllLines在IEnumerable上工作 - 因此懒惰......
P.P.S。:如果您使用的是< = .Net 3.5(在我为我们工作的公司),我的陈述是正确的,并且不应使用单行。