Ich brauchte eine kleine Methode, die mir aus einer Datei einen bestimmten Text entfernt. Hier ein Beispiel. Alles was zwischen den beiden Tag’s steht soll entfernt werden. Start Tag ist „Start“ und das EndTag hieß: „End“

Im Code schnell eine kleine ConsolenApplication erstellt und genau das programmiert. Der Aufruf sollte sehr einfach sein. Am besten eine Zeile. 😉

/// <summary>
/// 
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
    FileInfo fi = new FileInfo(@"C:\Temp\Original.txt");
    RemoveTextInFileInfo(fi, "Start", "End");
}

Die Methode nimmt jede Zeile in der Datei, ließt diese und schreibt diese wieder in einer neuen Temporären Datei weg. Den Text, der zwischen dem Start und End ist, soll einfach übersprungen werden.

/// <summary>
/// Entfernt einen Bestimmten Text aus einer Datei
/// </summary>
/// <param name="fi">File z.B. new FileInfo(@"C:\Temp\Original.txt")</param>
/// <param name="startTag">Start</param>
/// <param name="endTag">End</param>
public static void RemoveTextInFileInfo(FileInfo fi, string startTag, string endTag)
{
    String tempFile = Path.GetTempFileName();
    String filePath = fi.FullName;

    bool foundStartTag = false;
    bool foundEndTag = false;

    using (StreamReader reader = new StreamReader(fi.FullName))
    {
        using (StreamWriter writer = new StreamWriter(tempFile))
        {
            String line = null;

            while ((line = reader.ReadLine()) != null)
            {
                //ob es sich um eine Startzeile handelt
                if (line == startTag)
                    foundStartTag = true;
                //ob es sich um die Endzeile handelt
                if (line == endTag)
                    foundEndTag = true;

                //falls die Endzeile gefunden wurde, diese überspringen und alle lokalen Variablen zurücksetzen
                if (foundEndTag)
                {
                    foundStartTag = false;
                    foundEndTag = false;
                    continue;
                }
                //falls die Startzeile gefunden wurde, diese und alle anderen überspringen
                if (foundStartTag)
                    continue;

                //Daten in die neue Datei schreiben
                writer.WriteLine(line);
            }
        }
    }

    //Neue Daten schreiben
    if (File.Exists(tempFile))
    {
        File.Delete(fi.FullName);
        File.Move(tempFile, fi.FullName);
    }
}

Lässt man dies dann laufen, kommt dann folgende Datei raus.