User Tools

Site Tools


Action disabled: revisions
blog:2025-04-23-003



2025-04-23 C# file save overwrite

  • 在 C# 中,如果你想保存檔案並覆蓋已存在的檔案,可以使用 System.IO 命名空間中的 File.WriteAllText 或 File.WriteAllBytes 等方法,並確保不檢查檔案是否存在,或者使用 FileStream 搭配適當的 FileMode 來覆蓋檔案。以下是幾種常見的方法:

方法 1:使用 File.WriteAllText 覆蓋檔案

  • File.WriteAllText 會自動覆蓋現有檔案,如果檔案不存在則會創建一個新檔案。
  • using System;
    using System.IO;
    
    class Program
    {
        static void Main()
        {
            string filePath = "example.txt";
            string content = "這是新的檔案內容,將會覆蓋原有內容。";
    
            try
            {
                // 寫入檔案,若檔案已存在則會覆蓋
                File.WriteAllText(filePath, content);
                Console.WriteLine("檔案已成功保存並覆蓋!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("保存檔案時出錯: " + ex.Message);
            }
        }
    }

方法 2:使用 FileStream 覆蓋檔案

  • 使用 FileStream 並設置 FileMode.Create 模式,會覆蓋現有檔案或創建新檔案。
  • using System;
    using System.IO;
    using System.Text;
    
    class Program
    {
        static void Main()
        {
            string filePath = "example.txt";
            string content = "這是新的檔案內容,將會覆蓋原有內容。";
    
            try
            {
                // 使用 FileMode.Create 模式來覆蓋檔案
                using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write))
                {
                    byte[] data = Encoding.UTF8.GetBytes(content);
                    fs.Write(data, 0, data.Length);
                }
                Console.WriteLine("檔案已成功保存並覆蓋!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("保存檔案時出錯: " + ex.Message);
            }
        }
    }

方法 3:檢查檔案是否存在並刪除後重新創建

  • 如果你希望明確地檢查檔案是否存在並刪除它,可以使用 File.Delete 搭配 File.WriteAllText。
  • using System;
    using System.IO;
    
    class Program
    {
        static void Main()
        {
            string filePath = "example.txt";
            string content = "這是新的檔案內容,將會覆蓋原有內容。";
    
            try
            {
                // 如果檔案存在則刪除
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
    
                // 寫入新檔案
                File.WriteAllText(filePath, content);
                Console.WriteLine("檔案已成功保存並覆蓋!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("保存檔案時出錯: " + ex.Message);
            }
        }
    }

注意事項:

  • 權限問題:確保你的程式有足夠的權限來寫入或刪除目標檔案。
  • 例外處理:檔案操作可能會因為各種原因失敗(例如檔案被鎖定或目錄不存在),因此建議使用 try-catch 來處理例外。
  • 檔案路徑:確保檔案路徑正確,如果路徑中的目錄不存在,需要先創建目錄(可以使用 Directory.CreateDirectory)。

TAGS

  • 5 person(s) visited this page until now.

blog/2025-04-23-003.txt · Last modified: 2025/04/23 14:17 by jethro