我有一个包含很多行的文件。我逐行阅读并找到一个特定的字符串,我需要在此后插入另一行。
google -Source文件 实
谷歌 - 我应该得到的文件 stasckoverflow 实using (var fs = File.Open(fileOutPath, FileMode.OpenOrCreate))
{
using (StreamReader sr = new StreamReader(fs))
{
while ((line = sr.ReadLine()) != null)
{
if (line.StartsWith("google"))
{
我该怎么做才能在下一行写“stasckoverflow”
答案 0 :(得分:3)
您无法同时轻松地从文本文件读取和写入行。
您应该通过创建包含所需数据的新临时文件来解决此问题,然后删除旧文件并将临时文件重命名为与原始文件同名。
这些行中的某些内容应该有效(假设filePath
是原始文件):
string tempPath = Path.GetTempFileName();
using (var writer = new StreamWriter(tempPath))
{
foreach (string line in File.ReadLines(filePath))
{
writer.WriteLine(line);
if (line.StartsWith("google"))
writer.WriteLine("StackOverflow");
}
// If you want to add other lines to the end of the file, do it here:
writer.WriteLine("This line will be at the end of the file.");
}
File.Delete(filePath);
File.Move(tempPath, filePath); // Rename.
如果您只想写入文件的末尾而不在文件末尾之前插入任何文本,则可以不使用临时文件来执行此操作,如下所示:
using (var writer = new StreamWriter(tempPath, append:true))
{
writer.WriteLine("Written at end of file, retaining previous lines.");
}