2013-01-12 40 views
2

我有一個文本文件,我需要在遇到特定行後添加一些行。如何將行插入文本文件的中間?

我試圖做一個流對象,然後從文件中讀取,直到我得到搜索文本,然後通過設置其光標位置寫入相同的流,但它不起作用。

有沒有辦法做到這一點?

+4

顯示您的代碼,我們會盡力提供幫助。如果你只是想知道如何寫入文本文件,你應該嘗試谷歌,甚至搜索這個網站。這已經被記錄了100萬次以上。 – JohnFx

+0

可能重複的[如何在C#中編寫文本文件](http://stackoverflow.com/questions/1919552/how-to-write-a-text-file-in-c-sharp) – JohnFx

+0

你需要替換已經在文件中的文本,或者只是在它的中間插入一些新的文本? – vlad

回答

4

這裏是你如何能追加在文件的中間部分原文:

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>行。

+0

感謝弗拉德這可能只是解決我的問題:) –

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); 
      } 
     } 
    } 
+0

I實際上要根據文件中是否存在「」行以及其行號 –

+0

感謝您的輸入而在文件中間添加行,但需要在文件中添加新行, Sim屬性>「在文件中遇到:) –

相關問題