如何在文本文件的中间插入行?

时间:2013-01-12 05:44:12

标签: c# file-io

我有一个文本文件,我需要在遇到特定行后添加一些行。

我尝试制作一个流对象然后从文件中读取,直到我获得搜索文本,然后通过设置其光标位置写入相同的流,但它不起作用。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:5)

这里是你如何在文件中间附加一些文字:

var sb = new StringBuilder();
using (var sr = new StreamReader("inputFileName"))
{
    string line;
    do
    {
        line = sr.ReadLine();
        sb.AppendLine(line);
    } while (!line.Contains("<Sim Properties>"));

    sb.Append(myText);
    sb.Append(sr.ReadToEnd());
}

using (var sr = new StreamWriter("outputFileName"))
{
    sr.Write(sb.ToString());
}

这将在包含myText的行之后插入<Sim Properties>

答案 1 :(得分:0)

下面的代码示例演示了如何使用WriteAllLines方法将文本写入文件。在此示例中,如果文件尚未存在,则会创建一个文件,并添加文本。

   using System;
    using System.IO;
    class Test
    {
        public static void Main()
        {
            string path = @"c:\temp\MyTest.txt";

            // This text is added only once to the file. 
            if (!File.Exists(path))
            {
                // Create a file to write to. 
                string[] createText = { "Hello", "And", "Welcome" };
                File.WriteAllLines(path, createText);
            }

            // This text is always added, making the file longer over time 
            // if it is not deleted. 
            string appendText = "This is extra text" + Environment.NewLine;
            File.AppendAllText(path, appendText);

            // Open the file to read from. 
            string[] readText = File.ReadAllLines(path);
            foreach (string s in readText)
            {
                Console.WriteLine(s);
            }
        }
    }