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.
[…] die Compiler Info in den Dateien zu entfernen, habe ich mal ein Beitrag erstellt. Hier findet Ihr auch die Methode RemoveTextInFileInfo, die man sich einfach rauskopieren […]