国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#文件系統管理

2019-11-17 02:28:02
字體:
來源:轉載
供稿:網友

C#文件系統管理

Posted on 2015-04-07 01:08 wsying 閱讀(...) 評論(...) 編輯 收藏

  目錄

  • 前言
  • Directory類和DirectoryInfo類
  • File類和FileInfo類
  • Path類

前言

  管理文件系統主要是對計算機中文件和目錄的管理,例如,讀取文件信息、刪除文件和讀取目錄信息等。這些功能的實現主要是由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類的方法有很多相似之處,只是調試的方式不同,在此就不再對該類中的方法進行講解

    

Path類

  Path類對包含文件或目錄路徑信息的String實例執行操作,并且以跨平臺的方式執行這些操作。在不用的平臺上,表示路徑的字符串可能不相同,文件的擴展名格式也不相同,因為這些不同Path類的字段以及Path類的某些成員的行為與平臺相關

  Path類的所有成員(方法和屬性)都是靜態的,因此無需具有路徑的實例即可被調用,這些成員使用戶可以快速方便地執行常見操作,例如確定文件擴展名是否是路徑的一部分,以及將兩個字符串合成一個路徑名

  下面列出了Path類常用的方法及說明:

Path.GetExtension(path);  //返回指定路徑字符串的擴展名Path.GetFileNameWithoutExtension(path);//返回不具有擴展名的指定路徑字符串的文件名Path.GetFileName(path);  //返回具有擴展名的指定路徑字符串的文件名Path.GetFullPath(path);  //返回指定路徑字符串的絕對路徑Path.ChangeExtension(path,extension);//更改路徑字符串的擴展名


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 濮阳县| 邵东县| 太原市| 井研县| 内江市| 平远县| 扬州市| 孙吴县| 茶陵县| 措美县| 无极县| 家居| 怀来县| 科技| 山西省| 五峰| 南部县| 广昌县| 桃园市| 揭东县| 读书| 辽阳县| 新蔡县| 墨脱县| 太仓市| 腾冲县| 吕梁市| 金华市| 当阳市| 霍邱县| 拜泉县| 鹿泉市| 左云县| 红河县| 安多县| 临邑县| 盐池县| 图木舒克市| 山丹县| 浙江省| 竹溪县|