首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# StreamWriter 覆蓋寫入文本文件:File.WriteAllText 一行搞定

     編輯:程式設計綜合問答

問題

直接 `new StreamWriter(path)` 默認**追加**模式,導致舊內容未清空;改用 `FileStream(FileMode.Create)` 再包裹 `StreamWriter` 雖能清空,但讀取時出現亂碼(編碼不一致)。

現代最佳寫法

// .NET 4.0+ 直接覆蓋寫入,默認 UTF-8 無 BOM
System.IO.File.WriteAllText(filePath, content);

// 指定編碼(如 GB2312/UTF-8 with BOM)
System.IO.File.WriteAllText(filePath, content, Encoding.GetEncoding("gb2312"));

// 追加寫入
System.IO.File.AppendAllText(filePath, newLine, Encoding.UTF8);

// 讀取對應
string text = System.IO.File.ReadAllText(filePath, Encoding.UTF8);

原理

  • `WriteAllText` 內部使用 `FileMode.Create`、`FileAccess.Write`、`FileShare.Read`,自動關閉流,原子性替換文件。
  • 編碼顯式指定可避免亂碼,建議統一 UTF-8。

避坑指南

  • 勿手動 `new StreamWriter` 又不指定 `FileMode`。
  • 讀寫編碼必須一致,否則出現亂碼。
  • 大文件建議 `StreamWriter` + `using` 塊分塊處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved