2010-12-07 19 views
2

Der folgende Code liest eine Datei (einzeln aus einem Array) in eine Zeichenfolge, ersetzt ein übereinstimmendes Muster in der Zeichenfolge und hängt es dann an die Datei an.Problem mit C# StreamWriter

Ich möchte es überschreiben, anstatt anhängen. Was mache ich hier falsch?

using (FileStream fs = new FileStream(fileList[i], FileMode.Open)) 
using (StreamReader fileIn = new StreamReader(fs, true)) 
{ 
    String file = fileIn.ReadToEnd().ToLower(); 
    MessageBox.Show(file); 


    if (file.Contains(oPath)) 
    { 
     updated++; 
     file = file.Replace(oPath, nPath); 

     using (StreamWriter replaceString = new StreamWriter(fs, Encoding.Unicode)) 
     { 
       replaceString.Write(file); 
       listBoxResults.Items.Add(fileList[i]); 
     } 
    } 
} 

Antwort

2

Sie in die Datei zu schreiben, nachdem sie von dem Lesen - so die „Cursor“ im FileStream ist am Ende.

vielmehr der Strom selbst als Handhabung, wäre es einfacher, zu verwenden:

String file = File.ReadAllText(fileList[i]).ToLower(); 

... perform replacements etc ... 

File.WriteAllText(fileList[i], file); 
+0

Perfect, danke: – cc0

2

Der zweite Parameter von „Stream“ lautet: „anhängen“. So sollten Sie versuchen:

StreamWriter replaceString = new StreamWriter(fs, false, Encoding.Unicode) 
+0

] Das ist nicht für mich nicht kompiliert, ich bin mit .net 2.0, vielleicht ist es anders in späteren Versionen? – cc0

+1

Oh, ich sehe .. das funktioniert nur, wenn Sie ersten Parameter ist ein Pfad (String). – EvilMM

+0

Nein, scheint das auch nicht zu tun. – cc0