2010-12-07 95 views
2

以下代碼從一個數組中讀取一個文件(一次一個)到一個字符串中,替換字符串中的匹配模式,然後將其附加到文件中。C#StreamWriter問題

我希望它覆蓋,而不是追加。我在這裏做錯了什麼?

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]); 
     } 
    } 
} 

回答

2

你從中讀取後寫入文件 - 這樣的「光標」在FileStream是在年底。

而非自行處理流,這將是簡單的使用:

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

... perform replacements etc ... 

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

完美,謝謝:] – cc0 2010-12-07 13:34:41

2

「的StreamWriter」的第二個參數是:「追加」。 所以,你應該嘗試:

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

無法編譯對我來說,我使用.NET 2.0,不知是不是在後來的版本有什麼不同? – cc0 2010-12-07 13:28:14