溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# 文件操作詳解(三)---------Directory類

發(fā)布時間:2020-07-24 08:54:57 來源:網(wǎng)絡 閱讀:990 作者:馮忠雙 欄目:編程語言

 前面兩篇介紹了File類和FileInfo類,對于文件的操作基本夠用,但是后面還會補充一下FileStream相關(guān)的操作,例如StreamReader和StreamWriter的內(nèi)容。本文主要介紹Directory類的使用,讓我們一起看一下Directory類為我們提供了哪些操作。

  Directory類  提供了大量的操作目錄的靜態(tài)方法,下面我們一一學習一下。

  1、創(chuàng)建目錄

// 摘要:按 path 的指定創(chuàng)建所有目錄和子目錄。
public static DirectoryInfo CreateDirectory(string path);
// 摘要:創(chuàng)建指定路徑中的所有目錄,并應用指定的 Windows 安全性。
public static DirectoryInfo CreateDirectory(string path, DirectorySecurity directorySecurity);

  這里要說明一下,我們使用CreateDirectory方法時,不是只能創(chuàng)建一級目錄,而是可以創(chuàng)建一個層級目錄,只要你指定的目錄路徑無此目錄,就可以創(chuàng)建。

  2、刪除目錄

// 摘要:從指定路徑刪除空目錄。
public static void Delete(string path);
// 摘要:刪除指定的目錄并(如果指示)刪除該目錄中的任何子目錄。
public static void Delete(string path, bool recursive);

  我們看方法的注釋可以知道,第一個方法只能刪除一個空的目錄,若刪除非空目錄會提示錯誤,如圖:

C# 文件操作詳解(三)---------Directory類

第二個方法則是可以通過指定第二個參數(shù)來控制是否遞歸刪除子目錄,因此,建議在使用時先使用第一個方法,當捕獲到異常時,再提示使用第二個方法遞歸刪除(此處只是個人建議,并非固定模式)。

  3、獲取子目錄、文件

//獲取目錄集合
// 摘要:返回指定路徑中的目錄名稱的可枚舉集合。 public static IEnumerable<string> EnumerateDirectories(string path); // 摘要:返回指定路徑中與搜索模式匹配的目錄名稱的可枚舉集合。 public static IEnumerable<string> EnumerateDirectories(string path, string searchPattern); // 摘要:返回指定路徑中與搜索模式匹配的目錄名稱的可枚舉集合,還可以搜索子目錄。 public static IEnumerable<string> EnumerateDirectories(string path, string searchPattern, SearchOption searchOption); // 摘要:返回指定路徑中的文件名的可枚舉集合。 public static IEnumerable<string> EnumerateFiles(string path); // 摘要:返回指定路徑中與搜索模式匹配的文件名稱的可枚舉集合。 public static IEnumerable<string> EnumerateFiles(string path, string searchPattern); // 摘要:返回指定路徑中與搜索模式匹配的文件名稱的可枚舉集合,還可以搜索子目錄。 public static IEnumerable<string> EnumerateFiles(string path, string searchPattern, SearchOption searchOption); // 摘要:返回指定路徑中的文件系統(tǒng)項的可枚舉集合。 public static IEnumerable<string> EnumerateFileSystemEntries(string path); // 摘要:返回指定路徑中與搜索模式匹配的文件系統(tǒng)項的可枚舉集合。 public static IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern); // 摘要:返回指定路徑中與搜索模式匹配的文件名稱和目錄名稱的可枚舉集合,還可以搜索子目錄。 public static IEnumerable<string> EnumerateFileSystemEntries(string path, string searchPattern, SearchOption searchOption); //獲取目錄數(shù)組 // 摘要:獲取指定目錄中子目錄的名稱。 public static string[] GetDirectories(string path); // 摘要:從當前目錄獲取與指定搜索模式匹配的目錄的數(shù)組。 public static string[] GetDirectories(string path, string searchPattern); // 摘要:獲取當前目錄中與指定搜索模式匹配并使用某個值確定是否在子目錄中搜索的目錄的數(shù)組。 public static string[] GetDirectories(string path, string searchPattern, SearchOption searchOption);
//獲取文件 // 摘要:返回指定目錄中的文件的名稱。 public static string[] GetFiles(string path); // 摘要: 返回指定目錄中與指定搜索模式匹配的文件的名稱。 public static string[] GetFiles(string path, string searchPattern); // 摘要: 返回指定目錄中文件的名稱,該目錄與指定搜索模式匹配并使用某個值確定是否在子目錄中搜索。 public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption); // 摘要:返回指定目錄中所有文件和子目錄的名稱。 public static string[] GetFileSystemEntries(string path); // 摘要: 返回與指定搜索條件匹配的文件系統(tǒng)項的數(shù)組。 public static string[] GetFileSystemEntries(string path, string searchPattern); // 摘要: 獲取指定路徑中與搜索模式匹配的所有文件名稱和目錄名稱的數(shù)組,還可以搜索子目錄。 public static string[] GetFileSystemEntries(string path, string searchPattern, SearchOption searchOption);

  通過上述的方法我們可以完成目錄的遍歷功能,所以大家在練習本節(jié)的方法時,希望是以完成一個目錄遍歷的小例子為最終目的,我會在下篇中上傳我做的一個目錄遍歷的程序給大家做參考,希望能給大家提供幫助。

  4、獲取和設置目錄屬性

// 摘要:獲取一個 System.Security.AccessControl.DirectorySecurity 對象,該對象封裝指定目錄的訪問控制列表(ACL) 項。
public static DirectorySecurity GetAccessControl(string path);
// 摘要:獲取一個 System.Security.AccessControl.DirectorySecurity 對象,它封裝指定目錄的指定類型的訪問控制列表(ACL) 項。
public static DirectorySecurity GetAccessControl(string path, AccessControlSections includeSections);
// 摘要:獲取目錄的創(chuàng)建日期和時間。
public static DateTime GetCreationTime(string path);
// 摘要:獲取目錄創(chuàng)建的日期和時間,其格式為協(xié)調(diào)世界時 (UTC)。
public static DateTime GetCreationTimeUtc(string path);
// 摘要:返回上次訪問指定文件或目錄的日期和時間。
public static DateTime GetLastAccessTime(string path);
// 摘要:返回上次訪問指定文件或目錄的日期和時間,其格式為協(xié)調(diào)世界時 (UTC)。
public static DateTime GetLastAccessTimeUtc(string path);
// 摘要: 返回上次寫入指定文件或目錄的日期和時間。
public static DateTime GetLastWriteTime(string path);
// 摘要: 返回上次寫入指定文件或目錄的日期和時間,其格式為協(xié)調(diào)世界時 (UTC)。
public static DateTime GetLastWriteTimeUtc(string path);



// 摘要:將 System.Security.AccessControl.DirectorySecurity 對象描述的訪問控制列表 (ACL) 項應用于指定的目錄。
public static void SetAccessControl(string path, DirectorySecurity directorySecurity);
// 摘要:為指定的文件或目錄設置創(chuàng)建日期和時間。
public static void SetCreationTime(string path, DateTime creationTime);
// 摘要:設置指定文件或目錄的創(chuàng)建日期和時間,其格式為協(xié)調(diào)世界時 (UTC)。
public static void SetCreationTimeUtc(string path, DateTime creationTimeUtc);
// 摘要:設置上次訪問指定文件或目錄的日期和時間。
public static void SetLastAccessTime(string path, DateTime lastAccessTime);
// 摘要:設置上次訪問指定文件或目錄的日期和時間,其格式為協(xié)調(diào)世界時 (UTC)。
public static void SetLastAccessTimeUtc(string path, DateTime lastAccessTimeUtc);
// 摘要:設置上次寫入目錄的日期和時間。
public static void SetLastWriteTime(string path, DateTime lastWriteTime);
// 摘要:設置上次寫入某個目錄的日期和時間,其格式為協(xié)調(diào)世界時 (UTC)。
public static void SetLastWriteTimeUtc(string path, DateTime lastWriteTimeUtc);

  5、移動、判斷是否存在

// 摘要:將文件或目錄及其內(nèi)容移到新位置。
public static void Move(string sourceDirName, string destDirName);
// 摘要: 確定給定路徑是否引用磁盤上的現(xiàn)有目錄。
public static bool Exists(string path);

  6、獲取卷信息、根信息、當前工作目錄

// 摘要:獲取應用程序的當前工作目錄。
public static string GetCurrentDirectory();
// 摘要:返回指定路徑的卷信息、根信息或兩者同時返回。
public static string GetDirectoryRoot(string path);
// 摘要:檢索此計算機上格式為“<盤符>:\”的邏輯驅(qū)動器的名稱。
public static string[] GetLogicalDrives();
// 摘要:檢索指定路徑的父目錄,包括絕對路徑和相對路徑。
public static DirectoryInfo GetParent(string path);
// 摘要: 將應用程序的當前工作目錄設置為指定的目錄。
public static void SetCurrentDirectory(string path);

  

  總結(jié)

  以上即為Directory類中為我們提供的可使用方法,并且和File類一樣,這些方法都是靜態(tài)的,通過結(jié)合這些方法的使用我們可以完成對目錄的所有操作,本文就沒有提供相關(guān)的范例,在下篇中會提供一個使用以上方法完成的一個簡單的目錄檢索工具。

 

 

------------------------------------------------------------------------

聯(lián)系我:277241073@qq.com

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI