接下來利用幾段程式碼說明上述各種方法的應用。
如果指定的路徑不存在,則會出現找不到路徑的例外,執行結果如下:
同樣的,必須注意指定的檔案路徑必須完成正確,否則將出現例外。
無論新增或是刪除檔案,都必須確認檔案是否存在,引用Exists屬性,如果回傳是true,表示檔案存在,false則不存在,透過判斷屬性值可以避免錯誤,我們進一步來看檔案的移動與複製。
If判斷式根據輸入的編號,如果是「1」,引用CopyTo方法,將FileInfo物件變數finfo參考的檔案,複製一份儲存至變數dest代表的目的路徑底下,並且依指定的檔名命名,如果編號是「2」,則直接移動檔案。
最後還要來看FileInfo物件本身,由於其參考某個路徑底下的特定檔案,可以透過屬性存取檔案相關資訊,程式碼列舉如下:
// class Program { static void Main(string[] args) { try { Console.WriteLine("輸入要建立的檔案完整目錄:"); string path = Console.ReadLine(); FileInfo finfo = new FileInfo(path); FileStream stream = finfo.Create(); Console.WriteLine("完成檔案建立"); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); } } }要求使用輸入要建立的檔案其對應的完整路徑字串,建立FileInfo物件,最後引用Create方法,建立指定路徑下的檔案。
輸入要建立的檔案完整目錄: E:\FILEDEMO\Test.txt 完成檔案建立指定要建立的新檔案Test.txt ,按下ENTER按鈕即可在路徑E:\FILEDEMO底下,建立此檔案。
如果指定的路徑不存在,則會出現找不到路徑的例外,執行結果如下:
輸入要建立的檔案完整目錄: E:\DDDDDDE\xx.txt 找不到路徑 'E:\DDDDDDE\xx.txt' 的一部分。我們持續來看刪除檔案的方法,以下這段程式碼示範Delete方法的實際引用。
class Program { static void Main(string[] args) { try { Console.WriteLine("輸入要刪除的檔案完整路徑:"); string path = Console.ReadLine(); FileInfo finfo = new FileInfo(path); finfo.Delete(); Console.WriteLine("完成檔案刪除"); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); } } }其中建立FileInfo物件之後,引用Delete方法,將其行除,執行結果如下:
輸入要刪除的檔案完整路徑: E:\FileDemo\test.txt 完成檔案刪除當這個結果訊息出現,則text.txt檔案被刪除。
同樣的,必須注意指定的檔案路徑必須完成正確,否則將出現例外。
無論新增或是刪除檔案,都必須確認檔案是否存在,引用Exists屬性,如果回傳是true,表示檔案存在,false則不存在,透過判斷屬性值可以避免錯誤,我們進一步來看檔案的移動與複製。
//FileInfoMoveCopy class Program { static void Main(string[] args) { try { string amsg = "按任意鍵結束 !"; Console.WriteLine("輸入要操作的檔案完整路徑:"); string path = Console.ReadLine(); FileInfo finfo = new FileInfo(path); if (finfo.Exists == true) { Console.WriteLine("輸入目標檔案完整路徑:"); string dest = Console.ReadLine(); Console.Write("1.複製 2.移動 : "); char a = Console.ReadKey().KeyChar; if (a == '1') { finfo.CopyTo(dest); amsg = "完成檔案複製," + amsg; } else if (a == '2') { finfo.MoveTo(dest); amsg = "完成檔案移動," + amsg; } } else { amsg = "檔案不存在," + amsg; } Console.WriteLine("\n{0}\n", amsg); Console.ReadKey(); } catch (Exception ex) { Console.WriteLine(ex.Message); Console.ReadKey(); } } }建立要操作的FileInfo物件finfo,引用Exists屬性以判斷是否存在,是的話,進行接下來的檔案移動或是複製作業。
If判斷式根據輸入的編號,如果是「1」,引用CopyTo方法,將FileInfo物件變數finfo參考的檔案,複製一份儲存至變數dest代表的目的路徑底下,並且依指定的檔名命名,如果編號是「2」,則直接移動檔案。
輸入要操作的檔案完整路徑: E:\FILEDEMO\SUBA\filex.txt 輸入目標檔案完整路徑: E:\FILEDEMO\SUBB\filey.txt 1.複製 2.移動 : 1 完成檔案複製,按任意鍵結束 !以上是執行結果,其中選擇了「1」,因此SUBA資料夾底下的filex.txt會複製一份至SUBB資料夾,並以filey.txt作命名,如果選擇,則是動作業,因此原來SUBA資料夾底下的filex.txt會消失。
最後還要來看FileInfo物件本身,由於其參考某個路徑底下的特定檔案,可以透過屬性存取檔案相關資訊,程式碼列舉如下:
//FileInfoDemo class Program { static void Main(string[] args) { Console.WriteLine("輸入要操作的檔案完整路徑:\n"); string path = Console.ReadLine(); FileInfo finfo = new FileInfo(path); // Console.WriteLine("\n"); Console.WriteLine("檔案名稱:{0}", finfo.Name); Console.WriteLine("檔案副檔名:{0}", finfo.Extension); Console.WriteLine("檔案完整名稱:{0}", finfo.FullName); Console.WriteLine("檔案建立時間:{0}", finfo.CreationTime); Console.WriteLine("檔案最後存取時間:{0}", finfo.LastAccessTime); Console.WriteLine("檔案最後寫入時間:{0}", finfo.LastWriteTime); Console.WriteLine("\n"); Console.WriteLine("按任意鍵結束 !"); Console.ReadKey(); } }以下顯示讀取的檔案資訊:
輸入要操作的檔案完整路徑: E:\FILEDEMO\SUBA\filex.txt 檔案名稱:filex.txt 檔案副檔名:.txt 檔案完整名稱:E:\FILEDEMO\SUBA\filex.txt 檔案建立時間:2019/6/18 下午 05:32:11 檔案最後存取時間:2019/6/18 下午 05:33:24 檔案最後寫入時間:2019/6/18 下午 05:33:24 按任意鍵結束 !如果想要擷取某個目錄底下的所有檔案,可以透過DirectoryInfo物件引用GetFiles方法,取得所有的FileInfo物件陣列,再透過上述的程式碼,以迴圈逐一取出即可,以下為範例程式碼:
class Program { static void Main(string[] args) { Console.WriteLine("輸入要操作的目錄路徑:\n"); string path = Console.ReadLine(); DirectoryInfo dinfo = new DirectoryInfo(path); // Console.WriteLine("\n"); foreach (FileInfo finfo in dinfo.GetFiles()) { Console.WriteLine("檔案名稱:{0}", finfo.Name); Console.WriteLine("\t檔案副檔名:{0}", finfo.Extension); Console.WriteLine("\t檔案完整名稱:{0}", finfo.FullName); Console.WriteLine("\t檔案建立時間:{0}", finfo.CreationTime); Console.WriteLine("\t檔案最後存取時間:{0}", finfo.LastAccessTime); Console.WriteLine("\t檔案最後寫入時間:{0}", finfo.LastWriteTime); Console.WriteLine("\n"); } Console.WriteLine("按任意鍵結束 !"); Console.ReadKey(); } }執行這個範例並輸入要操作的目錄路徑,可以看到其中列舉指定目錄底下的所有檔案:
E:\FILEDEMO\SUBA 檔案名稱:filex00.txt 檔案副檔名:.txt 檔案完整名稱:E:\FILEDEMO\SUBA\filex00.txt 檔案建立時間:2019/6/18 下午 05:32:11 檔案最後存取時間:2019/6/18 下午 05:33:24 檔案最後寫入時間:2019/6/18 下午 05:33:24 檔案名稱:filex01.txt 檔案副檔名:.txt 檔案完整名稱:E:\FILEDEMO\SUBA\filex01.txt 檔案建立時間:2019/6/18 下午 10:33:30 檔案最後存取時間:2019/6/18 下午 10:33:30 檔案最後寫入時間:2019/6/18 下午 05:33:24 // ... 按任意鍵結束 !
沒有留言:
張貼留言