2011-08-24 174 views
1

我遇到了以下問題。我使用.NET Framework 1.1和我想要使用此代碼覆蓋文件:用File.CreateText覆蓋文件(C#)

 try 
     { 
      using (StringWriter writer = new StringWriter()) 
      { 
       Server.Execute(path, writer); 

       using (StreamWriter sr = File.CreateText(filepath + fileName)) 
       { 
        sr.WriteLine(writer.ToString()); 
       } 
      } 
     } 
     catch (Exception exc) 
     { 
      ... 
     } 

有時它工作正常,但有時它不會覆蓋該文件,並不會引發任何異常。有人能告訴我這個問題可能是什麼或者如何處理爲什麼它不覆蓋文件?

回答

6

爲什麼不乾脆:

File.WriteAllText(Path.Combine(filepath, fileName), writer.ToString()) 

MSDN: 創建一個新文件,指定的字符串寫入文件,然後關閉該文件。如果目標文件已經存在,它將被覆蓋。

+0

似乎對我好。 – PythEch

+0

看起來很有用,但我需要可以在.NET Framework 1.1中使用的東西。 – etarvt

+1

@etarvt你可能應該說,我們很難假設1.1 –

0

over write也可以用內置的file.copy方法實現。

File.copy具有過載 - msdn

希望這有助於

File.Copy Method (Source, Destination, OverWrite) 

更多信息。

1

有人可以告訴我這個問題可能是什麼或者如何處理爲什麼它 不覆蓋文件?

那麼,要回答您的實際問題,File.CreateText(string file)的行爲完全按照預期行事。如果filepath + fileName使用您的示例,是一個已經存在的文件,它將打開文件而不是創建它。 (它不覆蓋)。

您可以先使用File.Exists(string file)然後File.Delete(string file)檢查文件是否存在。如果File.CreateText(string file)不適合您的需求,您可以嘗試其他類型。也許FileInfo

微軟稱:

創建或打開編寫UTF-8編碼的文本文件。

來源:https://msdn.microsoft.com/en-us/library/system.io.file.createtext%28v=vs.110%29.aspx