我有一个文件,其中包含大约2000行文字,我需要添加几行。我的初始解决方案是将现有文件复制到新文件,然后在其末尾添加几行。直到我意识到文件中的最后一行必须始终是最后一行。所以现在我需要在那一行文本之前添加我的新行。我知道我可以只读取整个文件,将其保存到我的程序中,然后将所有内容写入包含额外行的新文件。但是,由于该文件有很多行我想知道它是否是更好的方法。
答案 0 :(得分:2)
您需要将其复制到新文件中。不幸的是,没有办法将数据注入文件的中间。
但是,您不必将其加载到内存中即可。您可以使用StreamReader
一次只读一行,或者更好的是System.IO.File.ReadLines
方法。
int newLineIndex = 100;
string newLineText = "Here's the new line";
using (var writer = new StreamWriter(outputFileName))
{
int lineNumber = 0;
foreach (var line in File.ReadLines(inputFileName))
{
if (lineNumber == newLineIndex)
{
writer.WriteLine(newLineText);
}
else if (lineNumber > 0)
{
writer.WriteLine();
}
writer.Write(line);
lineNumber++;
}
}
当然,如果你习惯假设新线总是在零指数处,这会变得非常容易。如果是这样的话,我很想放弃大部分内容,在写完第一行之后只需要一个简单的Stream.CopyTo
。但这应该仍然有效。
string newLineText = "Here's the new line";
using (var writer = new StreamWriter(outputFileName))
using (var reader = File.OpenRead(inputFileName))
{
writer.WriteLine(newLineText);
reader.CopyTo(writer.BaseStream);
}
当然,有许多方法可以执行此操作,并进行不同的权衡。这只是一个选择。
答案 1 :(得分:0)
我可以只读取整个文件,将其保存到我的程序中,然后将所有内容写入一个包含额外行的新文件。
不是所有东西都需要写。只需将插入的行后插入的行和行写入原始文件,从插入行的位置(字节索引)开始。