C#高級編程:移動、復制和刪除文件
C#高級編程:文件操作類
大家都知道,移動和刪除文件或文件夾可以使用FileInfo 和DirectoryInfo類的MoveTo() 和 Delete()方法來完成。File和Directory類的這兩個對應方法是Move() 和 Delete()。FileInfo 和 File類也分別執(zhí)行CopyTo() 和 Copy()方法。沒有復制完整文件夾的方法,而應復制文件夾中的每個文件。
這些方法的使用非常直觀—— SDK文檔提供了詳細的解釋。本節(jié)介紹在特定情況下,調(diào)用File類的靜態(tài)方法Move()、Copy()和Delete()的作用。為此,把前面的FileProperties示例擴展為一個新示例FilePropetiesAndMovement。這個示例有一個額外的功能:無論什么時候顯示文件的屬性,該應用程序都會給出刪除該文件的選項,或者把該文件移動和復制到其他地方的選項。
C#高級編程:FileInfo使用范例
下面介紹FilePropertiesAndMovement示例。圖1所示為該示例的用戶界面。
從這個屏幕圖上可以看出,它的外觀非常類似于FileProperties示例,但在窗口的底部添加了一個組,其中包含三個按鈕和一個文本框。這些控件僅在示例顯示了文件的屬性時才能使用,在其他情況下,它們都是禁用的。我們還壓縮了現(xiàn)有的控件,防止主窗體過大。在顯示文件的屬性時,該示例會自動把文件的完整路徑名放在底部的文本框中,供用戶編輯。用戶可以單擊底部的任何一個按鈕,執(zhí)行相應的操作。此時,會顯示一個相應的信息框,確認該操作。在上面的示例中,如果用戶單擊了Copy To,則顯示如圖圖2所示的信息。
圖1
圖2
當用戶單擊了Yes按鈕后,就可以開始執(zhí)行某些動作。用戶在窗體上執(zhí)行的某些動作會使顯示不正確。例如,在移動和刪除文件時,顯然不能在同一個地方顯示該文件的內(nèi)容。而且,如果改變同一個文件夾上的文件名,顯示的信息也會不正確。
此時,F(xiàn)ilePropertiesAndMovement示例會重新設置其控件,在文件的操作結(jié)束后,只顯示包含文件的文件夾。
為此,需要在FileProperties示例中添加相關的控件,及其事件處理程序代碼。
我們添加的控件是buttonDelete、buttonCopyTo、buttonMoveTo和 txtBoxNewPath。
首先看看用戶單擊Delete按鈕時調(diào)用的事件處理程序:
- protected void OnDeleteButtonClick(
- object sender, EventArgs e)
- {
- try
- {
- string filePath = Path.Combine(
- currentFolderPath,
- textBoxFileName.Text);
- string query = "Really delete the
- file\n" + filePath + "";
- if (MessageBox.Show(query,
- "Delete File", MessageBoxButtons.YesNo) ==
- DialogResult.Yes)
- {
- File.Delete(filePath);
- DisplayFolderList(currentFolderPath);
- }
- }
- catch(Exception ex)
- {
- MessageBox.Show("Unable to delete file.
- The following exception"
- + " occurred:\n" + ex.Message, "Failed");
- }
- }
這個方法的代碼包含在一個try塊中,這是因為很顯然會拋出一個異常,例如在用戶單擊了delete按鈕后,如果不允許刪除該文件,或者當時有另一個進程移動了該文件,就會拋出一個異常。在CurrentParentPath字段中構造要刪除文件的路徑,其中包含父文件夾的路徑,textBoxFileName文本框中的文本。
以上就介紹了C#高級編程:使用文件操作類進行移動、復制和刪除文件的方法。
【編輯推薦】