首頁 > 軟體

C#目錄和檔案管理操作詳解

2022-11-01 14:01:38

目錄和檔案管理

在.NET框架中,與作業系統環境相關的類主要有兩個:

  • 一個是Environment類,該類除了提供當前環境和作業系統平臺相關的資訊外,還提供了獲取本地邏輯驅動器和特殊資料夾的方法。
  • 另一個是DriveInfo類,提供了本地驅動器相關的詳細資訊。

Environment類

使用 Environment 類可檢索與作業系統相關的資訊,如命令列引數、退出程式碼、環境變數設定、呼叫堆疊的內容、自上次系統啟動以來的時間,以及公共語言執行庫的版本等。

例子

StringBuilder sb = new StringBuilder();
String[] drives = Environment.GetLogicalDrives();
sb.AppendLine("本機邏輯驅動器:" + String.Join(", ", drives));
sb.AppendLine("作業系統版本:" + Environment.OSVersion.VersionString);
sb.AppendLine("是否為64位元系統:" + Environment.Is64BitOperatingSystem);
sb.AppendLine("計算機名:" + Environment.MachineName);
sb.AppendLine("處理器個數:" + Environment.ProcessorCount);
sb.AppendLine("系統啟動後經過的毫秒數:" + Environment.TickCount);
sb.AppendLine("登入使用者名稱:" + Environment.UserName);
Console.WriteLine(sb.ToString());

DriveInfo類

 DriveInfo[] allDrives = DriveInfo.GetDrives();
foreach (DriveInfo d in allDrives)
{
    Console.WriteLine("Drive {0}", d.Name);
    Console.WriteLine("檔案型別: {0}", d.DriveType);
    if (d.IsReady == true)
    {
        Console.WriteLine("卷標: {0}", d.VolumeLabel);
        Console.WriteLine("檔案系統: {0}", d.DriveFormat);
        Console.WriteLine("當前使用者可用空間:{0} bytes", d.AvailableFreeSpace);
        Console.WriteLine("總可用空間:{0} bytes", d.TotalFreeSpace);
        Console.WriteLine("驅動器總容量:{0} bytes ", d.TotalSize);
    }
}

Path類

Path類用於對包含檔案或目錄路徑資訊的String範例執行操作。Path類的大多數成員不與檔案系統互動,並且不會驗證路徑字串指定的檔案是否存在,但Path成員可驗證表示路徑的字串是否有效,如果表示路徑的字串中包含無效字元,則該類將則引發ArgumentException異常。

目錄管理

Directory類提供了一些靜態方法,利用它們可對磁碟和目錄進行管理,如複製、移動、重新命名、建立、刪除目錄等。

  • CreateDirectory
    • public static DirectoryInfo CreateDirectory (string path)
    • 如果指定的目錄不存在,程式中呼叫該方法後,系統會按path指定的路徑建立所有目錄和子目錄。
  • Delete方法用於刪除指定的目錄
    • public static void Delete(string path, bool recursive)
    • 其中,引數path為要移除的目錄的名稱。path引數不區分大小寫,可以是相對於當前工作目錄的相對路徑,也可以是絕對路徑。recursive是一個布林值,如果要移除path中的目錄(包括所有子目錄和檔案),則為true;否則為false。
  • Move
    • public static void Move (string sourceDirName, string destDirName)
    • sourceDirName為要移動的檔案或目錄的路徑;destDirName為新位置的目標路徑。
    • destDirName引數指定的目標路徑應為新目錄,例如,將“c:mydir”移動到“c:public”,如果“c:public”已存在,則此方法會引發IOException異常。

檔案管理

在System.IO名稱空間下,.NET框架提供有一個File類,利用它可對檔案進行各種操作,如判斷檔案是否存在、建立、複製、移動、刪除、讀寫檔案。

1、判斷檔案是否存在

呼叫File類的Exists方法可以判斷是否存在指定的檔案。例如:

string path1 = @"c:tempMyTest1.txt";
if (File.Exists(path1))
{
	Console.WriteLine("存在 {0}檔案", path1);
}
else
{
	Console.WriteLine("不存在 {0}檔案", path1);
}

2、複製檔案

  • File類的Copy方法用於將現有檔案複製到新檔案。常用原型為
  • public static void Copy (string sourceFileName, string destFileName, bool overwrite)
  • 其中,引數sourceFileName為被複制的檔案;destFileName為目標檔案的名稱;overwrite表示是否可以覆蓋目標檔案,如果可以覆蓋目標檔案,則為true,否則為false。
  • 例如:
string path1 = @"c:tempMyTest1.txt";
if (!File.Exists(path1))
{
	File.WriteAllText(path1, "OK");
}
string path2 = @"c:tempMyTest2.txt";
File.Copy(path1, path2, true);

- 在這段程式碼中,如果目標檔案已存在,就直接覆蓋。實際應用時,一般會先詢問使用者是否覆蓋目標檔案,然後再根據使用者的選擇決定是否覆蓋目標檔案。

3、刪除檔案

  • File類的Delete方法用於刪除指定的檔案。如果指定的檔案不存在,則不進行任何操作,也不會產生異常。
  • 方法原型為:public static void Delete (string path)
  • 其中,引數path為要刪除的帶完整路徑的檔名稱。

4、移動檔案

  • File類的Move方法用於將指定檔案移到新位置,並提供指定新檔名的選項。
  • 方法原型為public static void Move (string sourceFileName, string destFileName)
  • 其中,引數sourceFileName為要移動的檔名稱,destFileName為檔案的新路徑。

5、判斷某個路徑是目錄還是檔案

  • 下面的程式碼演示瞭如何判斷某個路徑是目錄還是檔案:
if ((File.GetAttributes(path) & FileAttributes.Directory) == FileAttributes.Directory)
{
	Console.WriteLine("{0}是目錄", path);
}
else
{
	Console.WriteLine("{0}是檔案", path);
}

總結

到此這篇關於C#目錄和檔案管理操作的文章就介紹到這了,更多相關C#目錄和檔案管理內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com