特定の行に遭遇した後にいくつかの行を追加する必要があるテキスト ファイルがあります。
ストリーム オブジェクトを作成し、検索テキストを取得するまでファイルから読み取り、カーソル位置を設定して同じストリームに書き込みを試みましたが、機能しません。
これを行う方法はありますか?
ファイルの途中にテキストを追加する方法は次のとおりです。
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>
。
次のコード例は、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);
}
}
}