首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 目錄與檔案管理全攻略:Directory、File 類別實戰詳解

     編輯:關於C#

.NET 在 System.IO 命名空間提供了 Directory 與 File 兩大密封類別,封裝了豐富的靜態與實例方法,讓目錄樹操作與檔案全生命週期管理變得直觀高效。

目錄管理:Directory 類別詳解

核心屬性

  • Attributes:FileAttributes 列舉,支援唯讀(0x01)、隱藏(0x02)、系統、目錄、封存等旗標組合。
  • Name、Parent、Root:快速取得目錄名稱、父目錄、根目錄資訊。
  • CreationTime、LastAccessTime、LastWriteTime:完整時間戳記支援。

常用實例方法

// 建立單層/多層子目錄
Directory.CreateDirectory(@"C:\C#\file1");
Directory.CreateDirectory(@"C:\C#\file1\file2"); // 相當於 CreateSubdirectory

// 刪除目錄(需先清空內容)
var dir = new Directory(@"C:\C#\file1");
foreach (var sub in dir.GetDirectories()) sub.Delete();
dir.Delete();

異常處理模式

IOException(目錄已存在)、DirectoryNotFoundException(路徑不存在)等強型別異常,讓錯誤診斷更精準。

檔案管理:File 類別詳解

關鍵屬性

  • DirectoryName(絕對路徑)、Length(位元組長度)、時間戳記三件套。

核心操作方法

// 複製檔案(true=覆寫)
file.CopyTo(targetPath, true);

// 移動/重命名
file.MoveTo(newPath);

// 刪除
file.Delete();

實戰範例集錦

範例 1:命令列參數檔案複製工具

class FileCopyTool {
    static void Main(string[] args) {
        if (args.Length < 2) { Console.WriteLine("用法: FileCopyTool 來源 目標"); return; }
        try {
            new File(args[0]).CopyTo(args[1], true);
            Console.WriteLine("複製成功!");
        } catch (Exception ex) { Console.WriteLine($"失敗: {ex.Message}"); }
    }
}

範例 2:互動式清空當前目錄所有檔案

var dir = new Directory(".");
Console.Write("確定刪除所有檔案? (Y/N): ");
if (Console.ReadKey().Key == ConsoleKey.Y) {
    foreach (var f in dir.GetFiles()) f.Delete();
    Console.WriteLine("已清空。");
}

範例 3:條件刪除(僅 *.exe)

foreach (var f in dir.GetFiles("*.exe")) f.Delete();
// GetFiles 重載支援搜尋模式:*, *.log, data?.txt 等

深度觀察:File.Delete 的真實行為

實測發現 File.Delete 僅標記檔案系統項目為已刪除,資料實際保留於磁碟,可被 Norton Unerase 等工具完整恢復(含檔名)。這並非 .NET 缺陷,而是 NTFS 檔案系統的標準行為。若需資料粉碎,需覆寫資料區塊或呼叫 Win32 API SecureZeroMemory 等安全刪除介面。

進階技巧

  • 搭配 FileInfo / DirectoryInfo 實例類別進行多次操作時效能更佳(避免重複路徑解析)。
  • 大量檔案操作建議使用 EnumerateFiles 延遲載入,避免一次載入巨大陣列導致記憶體壓力。
  • 跨平台開發時注意路徑分隔符,優先使用 Path.Combine、Path.DirectorySeparatorChar。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved