C#之Directory类、DirectoryInfo类和Fileinfo,File以及FilesSystemInfo
一 兩者的共同點
?都用于典型的操作,如復制、移動、重命名、創建、打開、刪除和追加到文件
?默認情況下,將向所有用戶授予對新文件的完全讀寫訪問權限。
二?兩者的區別
File類是靜態類,由于所有的File方法都是靜態的,所以如果只想執行一個操作,那么使用File方法的效率比使用相應的FileInfo實例方法可能更高。
所有的File方法都要求當前所操作的文件的路徑。File類的靜態方法對所有方法都執行安全檢查。如果打算多次重用某個對象,可考慮改用FileInfo 的相應實例方法,因為并不總是需要安全檢查。?
?file,directory可以控制多個文件所以進行每次安全檢查,而FileInfo,DirectoryInfo只能控制一個文件信息只進行一次安全處理。
filesysteminfo提供fileinfo和directoryinfo的共有方法,實現對文件或目錄進行操作,當不確定操作的對象是文件還是目錄時使用filesysteminfo就會很方便。
靜態方法每次對文件進行操作過程是:靜態方法存在于棧頭,它是由類調用,然后尋找需要操作的文件。尋找需要操作文件的過程是個IO過程,耗時比較長。但它不必要到堆區去遍歷實例化新對象。普通方法是由當時的對象調用,需要創建對象,new一個,(靜態方法不需要此過程)但如果操作次數多的話,普通方法就不需要再次去執行不必要而且耗時的 IO操作,就能整體提速!
所以執行方法的次數也就能決定了使用哪個類的最佳選擇。
三 Directory類常用的方法如下:
CreateDirectory:按指定路徑創建所有文件夾和子文件夾。
Delete:刪除指定文件夾。
Exists:檢查指定路徑的文件夾是否存在,存在,返回true。
GetCreationTime:返回指定文件或文件夾的創建日期和時間。
GetCurrentDirectory:獲取應用程序的當前工作文件夾。
GetDirectories:獲取指定文件夾中子文件夾的名稱。
GetDirectoryRoot:返回指定路徑的卷信息、根信息或兩者同時返回。
GetFiles:返回指定文件夾中子文件的名稱。
GetFileSystemEntries:返回指定文件夾中所有文件和子文件的名稱。
GetLastAccessTime:返回上次訪問指定文件或文件夾的創建日期和時間。
GetLastWriteTime:返回上次寫入指定文件或文件夾的創建日期和時間。
GetLogicalDrives:檢索計算機中的所有驅動器,例如A:、C:等等。
GetParent:獲取指定路徑的父文件夾,包括絕對路徑和相對路徑。
Move:將指定文件或文件夾及其內容移動到新位置。
SetCreationTime:設置指定文件或文件夾的創建日期和時間。
SetCurrentDirectory:將應用程序的當前工作文件夾設置指定文件夾。
SetLastAccessTime:設置上次訪問指定文件或文件夾的日期和時間。
SetLastWriteTime:設置上次寫入指定文件夾的日期和時間。
四目錄創建方法:Directory.CreateDirectory
方法聲明如下:public static DirectoryInfo CreateDirectory(string path);下面的代碼演示在c:\Dir1文件夾下創建名為Dir2子文件夾。
Directory.CreateDirectory(@"c:\Dir1\Dir2");
五目錄屬性設置方法:DirectoryInfo.Atttributes
下面的代碼設置c:\Dir1\Dir2目錄為只讀、隱藏。與文件屬性相同,目錄屬性也是使用FileAttributes來進行設置的。
DirectoryInfo DirInfo=new DirectoryInfo(@"c:\Dir1\Dir2");
DirInfo.Atttributes=FileAttributes.ReadOnly|FileAttributes.Hidden;
六目錄刪除方法:Directory.Delete
該方法聲明如下:public static void Delete(string path,bool recursive);下面的代碼可以將c:\Dir1\Dir2目錄刪除。Delete方法的第二個參數為bool類型,它可以決定是否刪除非空目錄。如果該參數值為true,將刪除整個目錄,即使該目錄下有文件或子目錄;若為false,則僅當目錄為空時才可刪除。
Directory.Delete(@"c:\Dir1\Dir2",true);
七目錄移動方法:Directory.Move
該方法聲明如下:public static void Move(string sourceDirName,string destDirName);下面的代碼將目錄c:\Dir1\Dir2移動到c:\Dir3\Dir4。
File.Move(@"c:\Dir1\Dir2",@"c:\Dir3\Dir4");}
八獲取當前目錄下所有子目錄:Directory.GetDirectories
該方法聲明如下:public static string[] GetDirectories(string path;);下面的代碼讀出c:\Dir1\目錄下的所有子目錄,并將其存儲到字符串數組中。
string [] Directorys;
Directorys = Directory. GetDirectories (@"c:\Dir1");
獲得所有邏輯盤符:
string[] AllDrivers=Directory.GetLogicalDrives();
九獲取當前目錄下的所有文件方法:Directory.GetFiles
該方法聲明如下:public static string[] GetFiles(string path;);下面的代碼讀出c:\Dir1\目錄下的所有文件,并將其存儲到字符串數組中。
string [] Files;
Files = Directory. GetFiles (@"c:\Dir1",);
十判斷目錄是否存在方法:Directory.Exist
該方法聲明如下:public static bool Exists(string path;);下面的代碼判斷是否存在c:\Dir1\Dir2目錄。
if(File.Exists(@"c:\Dir1\Dir2"))//判斷目錄是否存在
{…}//處理語句
注意:路徑有3種方式,當前目錄下的相對路徑、當前工作盤的相對路徑、絕對路徑。以C:\dir1\dir2為例(假定當前工作目錄為C:\Tmp)。“dir2”,“\dir1\dir2”,“C:\dir1\dir2”都表示C: \dir1\dir2。另外,在C#中 “\”是特殊字符,要表示它的話需要使用“\\”。由于這種寫法不方便,C#語言提供了@對其簡化。只要在字符串前加上@即可直接使用“\”。所以上面的路徑在C#中應該表示為”dir2”,@”\dir1\dir2”,@”C:\dir1\dir2”。
?
轉載于:https://www.cnblogs.com/weiqiangwaideshijie/p/6743215.html
總結
以上是生活随笔為你收集整理的C#之Directory类、DirectoryInfo类和Fileinfo,File以及FilesSystemInfo的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为更好提高客户对产品的满意度需要搞好站点
- 下一篇: 类的无参、有参方法