Ich habe einen Prozess, der eine Reihe von "XML" -Dateien abgreift. Der Grund, warum ich xml in Anführungszeichen gesetzt habe, ist der, dass der Text in der Datei kein Root-Element hat, das ungültiges XML erzeugt. Bei meiner Verarbeitung möchte ich das korrigieren und jede Datei öffnen, am Anfang und am Ende jeder Datei einen Wurzelknoten hinzufügen und dann schließen. Hier ist, was ich im Sinn hatte, aber das beinhaltet das Öffnen der Datei, das Lesen der gesamten Datei, das Markieren der Knoten und das anschließende Schreiben der gesamten Datei. Diese Dateien können mehr als 20 MB groß sein.Hinzufügen von Text zu Anfang und Ende der Datei in C#
foreach (FileInfo file in files)
{
//open the file
StreamReader sr = new StreamReader(file.FullName);
// add the opening and closing tags
string text = "<root>" + sr.ReadToEnd() + "<root>";
sr.Close();
// now open the same file for writing
StreamWriter sw = new StreamWriter(file.FullName, false);
sw.Write(text);
sw.Close();
}
Irgendwelche Empfehlungen?
Einfach nur neugierig sein: Eine Zeichenfolge hier ist schlecht für die Leistung, oder ist C# -String-Klasse gut genug dafür? – schnaader
Der Hauptgrund, keine Zeichenfolge zu verwenden, besteht darin, dass sie unveränderlich ist, dh jedes Mal, wenn Sie Zeichenfolgen hinzufügen, müssen Sie ein neues String-Objekt erstellen. Da sein Code nur 2 Verkettungen hat, sehe ich keinen Vorteil in der Verwendung von StringBuilder, aber vielleicht fehlt mir etwas. Wie Earwicker bemerkte, gibt es jedoch eine bessere Methode. –
Ich bin auf diese Frage gestoßen, weil ich wollte, dass meine Protokolldateien die neueste Nachricht ganz oben haben. Ich habe jetzt die Protokollierung in eine Tabelle verschoben und eine Sortierung nach DateTime .. :) –