一般我們透過 DirectoryInfo 操作目錄系統,以下是建立DirectoryInfo物件所需的類別建構式:
DirectoryInfo 類別所提供的方法中, GetDirectories 用以取得指定目錄下的所有子目錄,其回傳一個包含所有子目錄的 DirectoryInfo 陣列物件, GetFiles 則用以取得目錄底下所有的檔案清單,其回傳值則為 FileInfo 陣列物件,這個陣列包含目錄下的所有檔案,利用迴圈即可將所有的內容成員取出。
foreach 敘述逐一取出 DirectoryInfo 物件陣列中的子目錄,引用 DirectoryInfo 類別的 Name 屬性,取得目錄名稱,接下來引用 LastAccessTime 等屬性,分別取得目錄物件最後存取日期時間等特定的目錄資訊輸出。
以下是執行畫面,於第一行輸入欲解析之目錄路徑,例如「D:\Book」,按一下Enter列舉所有的子目錄內容。
Delete方法只能刪除空目錄,如果目錄底下有子目錄,則會導致刪除作業失敗,並回傳錯誤訊息「目錄不是空的」,例如以下的執行結果:
DirectoryInfo(string path)其中的 string 參數 path 代表要操作的目錄路徑字串,你必須輸入指定的路徑名稱以建立參考此路徑的 DirectoryInfo 物件,一旦物件建立,便可以引用其提供的方法成員,進行目錄操作。
DirectoryInfo 類別所提供的方法中, GetDirectories 用以取得指定目錄下的所有子目錄,其回傳一個包含所有子目錄的 DirectoryInfo 陣列物件, GetFiles 則用以取得目錄底下所有的檔案清單,其回傳值則為 FileInfo 陣列物件,這個陣列包含目錄下的所有檔案,利用迴圈即可將所有的內容成員取出。
// DirectoryInfoDemo class Program { static void Main(string[] args) { Console.Write("輸入欲解析之目錄路徑:"); string path = Console.ReadLine(); DirectoryInfo dinfo = new DirectoryInfo(path); DirectoryInfo[] dinfos = dinfo.GetDirectories(); foreach (DirectoryInfo subdinfo in dinfos) { Console.WriteLine("\n子目錄:{0} 所屬根目錄 ... {1} ", subdinfo.Name, subdinfo.Root); Console.WriteLine("\t建立日期:{0}", subdinfo.CreationTime); Console.WriteLine("\t最後存取日期:{0}", subdinfo.LastAccessTime); Console.WriteLine("\t最後寫入日期:{0}", subdinfo.LastWriteTime); } Console.ReadKey(); } }其中取得使用者要解析的路徑字串path,將其傳入DirectoryInfo類別建立實體物件進行解析,接下來引用其 GetDirectories 方法取得路徑底下所有的子目錄,回傳的結果是封裝所有子目錄的DirectoryInfo 物件陣列。
foreach 敘述逐一取出 DirectoryInfo 物件陣列中的子目錄,引用 DirectoryInfo 類別的 Name 屬性,取得目錄名稱,接下來引用 LastAccessTime 等屬性,分別取得目錄物件最後存取日期時間等特定的目錄資訊輸出。
以下是執行畫面,於第一行輸入欲解析之目錄路徑,例如「D:\Book」,按一下Enter列舉所有的子目錄內容。
輸入欲解析之目錄路徑:D:\Book 子目錄:Developing 所屬根目錄 ... D:\ 建立日期:2018/9/28 上午 09:57:34 最後存取日期:2019/5/25 下午 10:31:38 最後寫入日期:2019/5/25 下午 10:31:38 子目錄:PublishingProcess 所屬根目錄 ... D:\ 建立日期:2018/9/28 上午 07:13:00 最後存取日期:2019/3/21 上午 09:50:05 最後寫入日期:2019/3/21 上午 09:50:05 子目錄:_Marketing 所屬根目錄 ... D:\ 建立日期:2018/11/12 下午 10:07:14 最後存取日期:2019/3/14 下午 08:18:53 最後寫入日期:2019/3/14 下午 08:18:53DirectoryInfo亦提供建立與刪除目錄的方法,如果要建立新目錄,只要將建立新目錄所需的路徑作為參數,建立DirectoryInfo物件,再引用Create方法即可,刪除則引用Delete方法。
// DirectoryInfoDDemo class Program { static void Main(string[] args) { try { Console.Write("輸入欲建立之目錄路徑:"); string path = Console.ReadLine(); DirectoryInfo dinfo = new DirectoryInfo(path); dinfo.Create(); Console.WriteLine("建立目錄完成。"); Console.Write("輸入「y」刪除新建目錄 {0}:", path); char c = Console.ReadKey().KeyChar; Console.WriteLine(""); if (c == 'y') { dinfo.Delete(); Console.WriteLine("目錄 {0} 刪除完成", path); } Console.WriteLine("\n按任意鍵離開 ..."); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); } } }這段範例程式碼中,先引用Create建立一個指定路徑的目錄,再顯示提示訊息,如果使用者輸入「y」,則引用Delete方法將建立的新目錄刪除。
輸入欲建立之目錄路徑:E:\TestDir 建立目錄完成。 輸入「y」刪除新建目錄 E:\TestDir:y 目錄 E:\TestDir 刪除完成 按任意鍵離開 ...如果沒有輸入其它非「y」的任意字元,則新目錄會建立在指定的路徑下,以此為例,在路徑E底下會新增一個TestDir子目錄。
Delete方法只能刪除空目錄,如果目錄底下有子目錄,則會導致刪除作業失敗,並回傳錯誤訊息「目錄不是空的」,例如以下的執行結果:
輸入欲建立之目錄路徑:E:\AAA 建立目錄完成。 輸入「y」刪除新建目錄 E:\AAA:y 目錄不是空的。在建立AAA目錄之後,於其中建立任何檔案,然後輸入「y」將其刪除,最後出現錯誤。
沒有留言:
張貼留言