C#目錄和文件管理操作詳解
目錄和文件管理
在.NET框架中,與操作系統(tǒng)環(huán)境相關(guān)的類主要有兩個(gè):
- 一個(gè)是Environment類,該類除了提供當(dāng)前環(huán)境和操作系統(tǒng)平臺(tái)相關(guān)的信息外,還提供了獲取本地邏輯驅(qū)動(dòng)器和特殊文件夾的方法。
- 另一個(gè)是DriveInfo類,提供了本地驅(qū)動(dòng)器相關(guān)的詳細(xì)信息。
Environment類
使用 Environment 類可檢索與操作系統(tǒng)相關(guān)的信息,如命令行參數(shù)、退出代碼、環(huán)境變量設(shè)置、調(diào)用堆棧的內(nèi)容、自上次系統(tǒng)啟動(dòng)以來的時(shí)間,以及公共語言運(yùn)行庫的版本等。
例子
StringBuilder sb = new StringBuilder(); String[] drives = Environment.GetLogicalDrives(); sb.AppendLine("本機(jī)邏輯驅(qū)動(dòng)器:" + String.Join(", ", drives)); sb.AppendLine("操作系統(tǒng)版本:" + Environment.OSVersion.VersionString); sb.AppendLine("是否為64位系統(tǒng):" + Environment.Is64BitOperatingSystem); sb.AppendLine("計(jì)算機(jī)名:" + Environment.MachineName); sb.AppendLine("處理器個(gè)數(shù):" + Environment.ProcessorCount); sb.AppendLine("系統(tǒng)啟動(dòng)后經(jīng)過的毫秒數(shù):" + Environment.TickCount); sb.AppendLine("登錄用戶名:" + Environment.UserName); Console.WriteLine(sb.ToString());
DriveInfo類
DriveInfo[] allDrives = DriveInfo.GetDrives(); foreach (DriveInfo d in allDrives) { Console.WriteLine("Drive {0}", d.Name); Console.WriteLine("文件類型: {0}", d.DriveType); if (d.IsReady == true) { Console.WriteLine("卷標(biāo): {0}", d.VolumeLabel); Console.WriteLine("文件系統(tǒng): {0}", d.DriveFormat); Console.WriteLine("當(dāng)前用戶可用空間:{0} bytes", d.AvailableFreeSpace); Console.WriteLine("總可用空間:{0} bytes", d.TotalFreeSpace); Console.WriteLine("驅(qū)動(dòng)器總?cè)萘?{0} bytes ", d.TotalSize); } }
Path類
Path類用于對包含文件或目錄路徑信息的String實(shí)例執(zhí)行操作。Path類的大多數(shù)成員不與文件系統(tǒng)交互,并且不會(huì)驗(yàn)證路徑字符串指定的文件是否存在,但Path成員可驗(yàn)證表示路徑的字符串是否有效,如果表示路徑的字符串中包含無效字符,則該類將則引發(fā)ArgumentException異常。
目錄管理
Directory類提供了一些靜態(tài)方法,利用它們可對磁盤和目錄進(jìn)行管理,如復(fù)制、移動(dòng)、重命名、創(chuàng)建、刪除目錄等。
- CreateDirectory
- public static DirectoryInfo CreateDirectory (string path)
- 如果指定的目錄不存在,程序中調(diào)用該方法后,系統(tǒng)會(huì)按path指定的路徑創(chuàng)建所有目錄和子目錄。
- Delete方法用于刪除指定的目錄
- public static void Delete(string path, bool recursive)
- 其中,參數(shù)path為要移除的目錄的名稱。path參數(shù)不區(qū)分大小寫,可以是相對于當(dāng)前工作目錄的相對路徑,也可以是絕對路徑。recursive是一個(gè)布爾值,如果要移除path中的目錄(包括所有子目錄和文件),則為true;否則為false。
- Move
- public static void Move (string sourceDirName, string destDirName)
- sourceDirName為要移動(dòng)的文件或目錄的路徑;destDirName為新位置的目標(biāo)路徑。
- destDirName參數(shù)指定的目標(biāo)路徑應(yīng)為新目錄,例如,將“c:\mydir”移動(dòng)到“c:\public”,如果“c:\public”已存在,則此方法會(huì)引發(fā)IOException異常。
文件管理
在System.IO命名空間下,.NET框架提供有一個(gè)File類,利用它可對文件進(jìn)行各種操作,如判斷文件是否存在、創(chuàng)建、復(fù)制、移動(dòng)、刪除、讀寫文件。
1、判斷文件是否存在
調(diào)用File類的Exists方法可以判斷是否存在指定的文件。例如:
string path1 = @"c:\temp\MyTest1.txt"; if (File.Exists(path1)) { Console.WriteLine("存在 {0}文件", path1); } else { Console.WriteLine("不存在 {0}文件", path1); }
2、復(fù)制文件
- File類的Copy方法用于將現(xiàn)有文件復(fù)制到新文件。常用原型為
- public static void Copy (string sourceFileName, string destFileName, bool overwrite)
- 其中,參數(shù)sourceFileName為被復(fù)制的文件;destFileName為目標(biāo)文件的名稱;overwrite表示是否可以覆蓋目標(biāo)文件,如果可以覆蓋目標(biāo)文件,則為true,否則為false。
- 例如:
string path1 = @"c:\temp\MyTest1.txt"; if (!File.Exists(path1)) { File.WriteAllText(path1, "OK"); } string path2 = @"c:\temp\MyTest2.txt"; File.Copy(path1, path2, true);
- 在這段代碼中,如果目標(biāo)文件已存在,就直接覆蓋。實(shí)際應(yīng)用時(shí),一般會(huì)先詢問用戶是否覆蓋目標(biāo)文件,然后再根據(jù)用戶的選擇決定是否覆蓋目標(biāo)文件。
3、刪除文件
- File類的Delete方法用于刪除指定的文件。如果指定的文件不存在,則不進(jìn)行任何操作,也不會(huì)產(chǎn)生異常。
- 方法原型為:public static void Delete (string path)
- 其中,參數(shù)path為要?jiǎng)h除的帶完整路徑的文件名稱。
4、移動(dòng)文件
- File類的Move方法用于將指定文件移到新位置,并提供指定新文件名的選項(xiàng)。
- 方法原型為public static void Move (string sourceFileName, string destFileName)
- 其中,參數(shù)sourceFileName為要移動(dòng)的文件名稱,destFileName為文件的新路徑。
5、判斷某個(gè)路徑是目錄還是文件
- 下面的代碼演示了如何判斷某個(gè)路徑是目錄還是文件:
if ((File.GetAttributes(path) & FileAttributes.Directory) == FileAttributes.Directory) { Console.WriteLine("{0}是目錄", path); } else { Console.WriteLine("{0}是文件", path); }
總結(jié)
到此這篇關(guān)于C#目錄和文件管理操作的文章就介紹到這了,更多相關(guān)C#目錄和文件管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#使用自定義的泛型節(jié)點(diǎn)類實(shí)現(xiàn)二叉樹類
這篇文章主要為大家詳細(xì)介紹了C#如何使用自定義的泛型節(jié)點(diǎn)類 Node<T>實(shí)現(xiàn)二叉樹類BinaryTree<T>及其方法,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-03-03C# DataTable與Model互轉(zhuǎn)的示例代碼
這篇文章主要介紹了C#DataTable與Model互轉(zhuǎn)的示例代碼,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-12-12winform多線程組件BackgroundWorker使用
這篇文章介紹了winform多線程組件BackgroundWorker的使用方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05C#中List集合使用Max()方法查找到最大值的實(shí)例
這篇文章主要介紹了C#中List集合使用Max()方法查找到最大值的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12詳解C#中Dictionary<TKey,TValue>的存儲(chǔ)結(jié)構(gòu)
無論是實(shí)際的項(xiàng)目中,還是在我們學(xué)習(xí)的過程中,都會(huì)重點(diǎn)的應(yīng)用到Dictionary<TKey,?TValue>這個(gè)存儲(chǔ)類型,所以本文就來為大家介紹一下這一存儲(chǔ)結(jié)構(gòu)的相關(guān)知識,希望對大家有所幫助2023-11-11