DirectoryInfo類和Directory類之間的關系與FileInfo類和File類之間的關系十分類似。下面介紹一下DirectoryInfo類的常用屬性。
DirectoryInfo類的常用屬性及說明如表所示。
表 DirectoryInfo類的常用屬性及說明
屬性 | 說明 |
Attributes | 設置當前 FileSystemInfo 的 FileAttributes |
CreationTime | 設置當前 FileSystemInfo 對象的創建時間 |
Exists | 獲取指示目錄是否存在的值 |
FullName | 獲取目錄或文件的完整目錄 |
Parent | 獲取指定子目錄的父目錄 |
Name | 獲取此 DirectoryInfo 實例的名稱 |
下面對DirectoryInfo類中比較重要的屬性進行詳細介紹。
(1)CreationTime 屬性
設置當前 FileSystemInfo 對象的創建時間。
語法:
public DateTime CreationTime { get; set; }
屬性值:當前 FileSystemInfo 對象的創建日期和時間。
例如,獲得F:\test\0000\目錄下文件夾AA的創建日期和時間,首先將DirectoryInfo實例化,然后通過CreationTime屬性得到此文件夾的創建日期和時間。代碼如下所示:
string Paths = @"F:\test\0000\AA"; DirectoryInfo di = new DirectoryInfo(Paths);// 將DirectoryInfo實例化 string name = di.CreationTime.ToString();//通過CreationTime屬性得到此文件夾的創建日期和時間 Label1.Text = "文件夾創建時間:"+name;
(2)Exists屬性
判斷指定的文件夾是否存在。
語法:
public override bool Exists { get; }
屬性值:如果目錄存在,則為 True;否則為 False。
例如,判斷F:\test\0000\目錄下是否存在名為ls的文件夾,首先要將DirectoryInfo實例化,然后通過Exists屬性判斷此文件夾是否存在,如果文件夾存在,返回值為True,否則為False。代碼如下所示:
1 string Paths = @"F:\test\0000\AA"; 2 3 DirectoryInfo di = new DirectoryInfo(Paths); 4 5 if (di.Exists) 6 7 { 8 9 Page.RegisterStartupScript("","<script>alert('該文件夾已經存在')</script>"); 10 11 }
DirectoryInfo類的常用方法及說明如表所示。
表 DirectoryInfo類的常用方法及說明
方法 |
說明 |
Create | 創建目錄 |
CreateObjRef | 創建一個對象,該對象包含生成用於與遠程對象進行通信的代理所需的全部相關信息 |
CreateSubdirectory | 在指定路徑中創建一個或多個子目錄。指定路徑可以是相對於 DirectoryInfo 類的此實例的路徑 |
Delete | 從路徑中刪除 DirectoryInfo 及其內容 |
Equals | 確定兩個 Object 實例是否相等 |
GetAccessControl | 獲取當前目錄的訪問控制列表 (ACL) 項 |
GetDirectories | 返回當前目錄的子目錄 |
GetFiles | 返回當前目錄的文件列表 |
GetFileSystemInfos | 檢索表示當前目錄的文件和子目錄的強類型 FileSystemInfo 對象的數組 |
GetHashCode | 用作特定類型的哈希函數。GetHashCode 適合在哈希算法和數據結構(如哈希表)中使用 |
GetLifetimeService | 檢索控制此實例的生存期策略的當前生存期服務對象 |
GetObjectData | 設置帶有文件名和附加異常信息的 SerializationInfo 對象 |
GetType | 獲取當前實例的 Type |
InitializeLifetimeService | 獲取控制此實例的生存期策略的生存期服務對象 |
MoveTo | 將 DirectoryInfo 實例及其內容移動到新路徑 |
ReferenceEquals | 確定指定的 Object 實例是否是相同的實例 |
Refresh | 刷新對象的狀態 |
SetAccessControl | 將 DirectorySecurity 對象所描述的訪問控制列表 (ACL) 項應用於當前 DirectoryInfo 對象所描述的目錄 |
ToString | 返回用戶所傳遞的原始路徑 |
下面對DirectoryInfo類中比較重要的方法進行詳細介紹。
(1)Create方法
此方法可以方便的創建目錄。
語法:
public void Create ()
例如,在D盤下創建名為AA的文件夾,首先要將DirectoryInfo類實例化,然后判斷是否存在同名的文件夾,如果不存在,則使用Create方法創建目錄。代碼如下所示:
1 string path = "D:\\AA"; 2 3 DirectoryInfo di = new DirectoryInfo(path); 4 5 if (!di.Exists) 6 7 { 8 9 di.Create(); 10 11 } 12 13 else 14 15 { 16 17 Response.Write("此文件夾已經存在!"); 18 19 } 20
(2)GetFileSystemInfos方法
返回表示某個目錄中所有文件和子目錄的強類型FileSystemInfo項的數組。
語法:
public FileSystemInfo[] GetFileSystemInfos ()
返回值:
強類型 FileSystemInfo 項的數組。
(3)MoveTo方法
將指定的內容移動到新路徑。
語法:
public void MoveTo (string destDirName)
參數:
destDirName :要將此目錄移動到的目標位置的名稱和路徑,目標不能是另一個具有相同名稱的磁盤卷或目錄。
(4)Delete方法
刪除指定的文件夾。
語法:
public override void Delete ()
例如,刪除D盤下名為AA的文件夾,首先將DirectoryInfo類實例化,然后判斷是否存在此文件夾,如果存在則使用Delete方法刪除此文件夾。
1 string path = "D:\\AA"; 2 3 DirectoryInfo di = new DirectoryInfo(path); 4 5 if (di.Exists) 6 7 { 8 9 di. Delete(); 10 11 } 12 13 else 14 15 { 16 17 Response.Write("不存在此文件夾!"); 18 19 }
Directory 與 DirectoryInfo 這兩個能夠實現大多數相同的功能。
區別可分為兩點:
一、靜態與實例調用 前者必須被實例化后才能使用,而后者則只提 供了靜態的方法。如果多次使用某個對象一般使用前者; 如果僅執行某一個操作則使用后者提供的靜態方法效率更 高一些。
Directory 可直接調用,不需要實例化,比如 Directory.Delete(path)。一般比DirectoryInfo的函數要多出一個path參數。 DirectoryInfo 必須實例化才能調用其方法,在頻繁地操作某一目錄時,這種方式比較方便。
二、功能多少 DirectoryInfo 的功能要稍微比 Directory 多些、強些,比如 DirectoryInfo 的 GetFiles 返回的是 FileInfo[],而 Directory.GetFiles 返回的是 string[]。