C#檔案系統管理

來源:互聯網
上載者:User

標籤:

  管理檔案系統主要是對電腦中檔案和目錄的管理,例如,讀取檔案資訊、刪除檔案和讀取目錄資訊等。這些功能的實現主要是由System.IO命名空間下的類對檔案和目錄進行操作

  System.IO命名空間為目錄和檔案的操作提供了必要的類、方法和屬性

 

一、Directory類和DirectoryInfo類

  在System.IO命名空間中,提供了Directory類和DirectoryInfo類來進行目錄管理。使用這兩個類可以完成對目錄及其子目錄的建立、移動、瀏覽等操作,甚至還可以定義隱藏目錄和唯讀目錄

  Directory類的所有方法都為靜態方法,因此無需建立對象即可調用,這些方法可以操縱和查詢任何目錄的資訊;而DirectoryInfo類需要有執行個體成員才可以調用其方法,從而有效地對一個目錄進行多種操作。DirectoryInfo類執行個體化後,還可以通過其屬性擷取目錄的建立時間和最後修改時間等狀態

  

  1、DirectoryInfo類的常用屬性

  DirectoryInfo類的屬性可以擷取或設定目前的目錄的相關屬性,下面建立一個樣本,使用Attributes等屬性設定並獲C:\Users\Eniac\Desktop\TestDirectory目錄的相關屬性資訊,代碼如下:

 

string dirPath = "C:\\Users\\Eniac\\Desktop\\TestDirectory";    //目錄的絕對路徑if (Directory.Exists(dirPath))     //如果目錄存在{    DirectoryInfo info = new DirectoryInfo(dirPath);    //初始化目前的目錄執行個體    info.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden;  //利用Attributes屬性設定目錄為唯讀和隱藏   /*利用DirectoryInfo執行個體的屬性獲得目前的目錄的資訊*/    label1.Text += "全部名稱                : " + info.FullName + "\n";    label1.Text += "目錄建立時間            : " + info.CreationTime.ToString() + "\n";     label1.Text += "最後一次訪問該目錄的時間: " + info.LastAccessTime.ToString() + "\n";     label1.Text += "最後一次修改目錄時間    : " + info.LastWriteTime.ToString() + "\n";    label1.Text += "DirectoryInfo執行個體名稱   : " + info.Name + "\n";    label1.Text += "父目錄                  : " + info.Parent + "\n";    label1.Text += "路徑根部分              : " + info.Root.ToString() + "\n";}else{    label1.Text = "該目錄不存在,請檢驗路徑是否正確";}

 

  執行結果如:

    

  2、Directory類的常用方法

  (1)Exists方法

  Exists方法接收一個參數,該參數表示包含目前的目錄路徑的字串,Exists方法返回結果指示目錄是否存在,如果存在,返回true,否則返回false。如上例if語句的判別條件:

if (Directory.Exists(dirPath))     //如果目錄存在

 

  (2)CreatDirectory方法

  CreatDirectory方法接受一個建立目錄路徑的String型別參數,該方法會根據此路徑建立新目錄,並且該方法返回一個DirectoryInfo執行個體,如果建立的目錄已經存在,則返回代表指定目錄的類執行個體,不會建立目錄,也不會產生異常。通常用法如下:

 

if (!Directory.Exists(dirPath))   //如果目錄不存在就建立目錄 {    Directory.CreateDirectory(dirPath);}

 

  (3)Delete方法

  Delete方法可以刪除指定的目錄,該方法為一個重載方法,可以接收一個參數或兩個參數。當方法接收一個參數時,該參數為指定目錄的路徑,這種情況下只能刪除指定的空目錄,如果目錄不空,系統會拋出異常;當該方法接收兩個參數時,第二個參數為bool值,如果為true,則可以刪除非空目錄。通常用法如下:

if(Directory.Exists(dirPath))    //如果目錄存在{    try    {        Directory.Delete(dirPath,true);//刪除目錄以及目錄中所有的子目錄和檔案    }    catch(Exception ex)    //當出現異常時,系統拋出異常    {        MessageBox.Show(ex.Message.ToString());    }}    

 

  (4)Move方法

  Move方法表示將指定目錄移動到新位置,並提供指定新目錄名。該方法能夠接收兩個參數,其中第一個參數表示要移動的目錄路徑,第二個參數表示目標路徑(加上指定的新目錄名),當要移動的目錄和目標路徑的父目錄相同時,Move就不再移動目錄而是重新命名目錄。Move方法不能把目錄在不同的邏輯磁碟機之間進行移動,格式如下:

string dirPath1 = "C:\Users\Eniac\Desktop\dir1";string dirPath2 = "C:\Program Files\dir2";Directory.Move(dirPath1,dirPath2); //把目錄dir1移動到C:\Program Files目錄下並重新命名為dir2

 

  另外Directory類還有以下方法,就不一一詳細介紹了:

Directory.GetFiles(dirPath);  //擷取指定目錄中所有檔案的檔案名稱(檔案清單,包含子目錄)Directory.GetDirectories(dirPath);  //擷取指定目錄下所有子目錄名Directory.GetFileSystemEntries(dirPath); //擷取指定目錄中的所有子目錄名及檔案名稱

 

  DirectoryInfo類中還有一些方法,DirectoryInfo類對象通過使用這些方法可以操作當前檔案,這些方法的使用跟Directory類的方法很類似,並且有很多功能也是相同的。具體使用時,如果使用者打算多次重用某個對象,可以考慮使用DirectoryInfo的執行個體方法,而不是Directory類相應的靜態方法,因為DirectoryInfo的執行個體方法並不總是需要進行安全檢查,預設情況下,該類將向所有使用者授予對新目錄的完全讀/寫存取權限

  由於DirectoryInfo類中的方法和Directory類的方法有很多相似之處,只是調試的方式不同,在此就不再對該類中的方法進行講解

    

 

二、File類和FileInfo類

  System.IO命名空間的File類和FileInfo類提供有關檔案系統操作的相關內容,例如建立、刪除、移動和開啟檔案等

  File類的操作方式與Directory類相似,File類中的方法大多都為靜態方法;而FileInfo類和上文中講解的DirectoryInfo類相似,只有在執行個體化的情況下才可以使用其屬性和方法

 

  1、FileInfo類的常用屬性

  FileInfo類主要用於對執行個體對象的操作,跟DirectoryInfo類的操作方式比較相似,該類提供了很多屬性,通過FileInfo類的屬性可以獲得檔案的相關資訊。我們通過下面的程式簡單瞭解一下FileInfo類的屬性:

private void button1_Click(object sender, EventArgs e)//選擇檔案{    /*此處用到了一個OpenFileDialog控制項*/    if (openFileDialog1.ShowDialog() != DialogResult.OK)//開啟失敗則退出    {        return;    }    textBox1.Text = openFileDialog1.FileName;//把選中檔案的絕對路徑填入文字框}private void button2_Click(object sender, EventArgs e)//擷取詳細資料{    string filePath = textBox1.Text;    //檔案的絕對路徑    FileInfo info = new FileInfo(filePath);//初始化當前檔案執行個體    label1.Text += "········檔案名稱: " + info.Name + "\n";    label1.Text += "······檔案完整路徑: " + info.FullName + "\n";    label1.Text += "····所在目錄完整路徑: " + info.DirectoryName + "\n";    label1.Text += "·······副檔名: " + info.Extension + "\n";    label1.Text += "········檔案大小: " + info.Length / 1024 + "KB\n";    label1.Text += "······檔案建立時間: " + info.CreationTime.ToString() + "\n";    label1.Text += "最後一次訪問該檔案的時間: " + info.LastAccessTime.ToString() + "\n";    label1.Text += "·最後一次寫入該檔案時間: " + info.LastWriteTime.ToString() + "\n";    label1.Text += "·····檔案是否為唯讀: " + info.IsReadOnly + "\n";}

 

  執行結果如:

 

  2、File類的常用方法

  下面列出了File類的常用方法:

File.Exists(filePath);  //用於判定指定檔案是否存在File.Create(filePath);  //在指定路徑中建立檔案File.Delete(filePath);  //刪除指定檔案File.Move(filePath1,filePath2);//把filePath1檔案移動到指定的filePath2路徑File.Copy(filePath1,filePath2);//把filePath1檔案複製到指定的filePath2路徑File.AppendAllText(filePath,String);//將字串(第二個參數)追加到指定檔案中,若檔案不存在則此方法先建立檔案再追加File.ReadAllLines(filePath);//一次性讀取指定檔案的所有行,返回一個字串數組,數組元素是每一行的內容File.ReadAllText(filePath);//一次性讀取指定檔案的所有內容,返回一個包含全部常值內容的字串File.WriteAllLines(filePath,String[]);//一次將字串數組的每一個元素作為一行寫入指定檔案File.WriteAllText(filePath,String);//一次性將字串(第二個參數)寫入指定檔案

 

  上述後四種方法適用於檔案讀寫的內容不是很多的情況下,在檔案讀寫的時候會細講

 

  FileInfo類中還有一些方法,FileInfo類對象通過使用這些方法可以操作當前檔案,這些方法的使用跟File類的方法很類似,並且有很多功能也是相同的。具體使用時,如果使用者打算多次重用某個對象,可以考慮使用FileInfo的執行個體方法,而不是File類相應的靜態方法,因為FileInfo的執行個體方法並不總是需要進行安全檢查,預設情況下,該類將向所有使用者授予對新檔案的完全讀/寫存取權限

  由於FileInfo類中的方法和File類的方法有很多相似之處,只是調試的方式不同,在此就不再對該類中的方法進行講解

    

 

C#檔案系統管理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.