標籤:
這兒所說的並不是對檔案進行讀寫,只是針對於擷取檔案和目錄等。
主要分為對磁碟機,目錄和檔案三大類。
對磁碟機需要用到DriveInfo類來實現
對目錄需要用到DirectoryInfo類來實現
對檔案需要用到FileInfo類來實現。
其中 FileSystemInfo類既可以訪問檔案,也可以訪問目錄。
具體看下面的代碼。
首先是訪問磁碟機:
//示範檔案操作 /// <summary> /// 定義一個操作類 /// </summary> class FileClass { /// <summary> /// 列印磁碟機資訊 /// </summary> public void Drive() { try { //擷取電腦上的所有磁碟機 DriveInfo[] drive = DriveInfo.GetDrives(); Console.WriteLine("磁碟卷標\t磁碟機名\t類型\t格式\t總共空間\t可用空間"); foreach (var VARIABLE in drive) { Console.WriteLine("{0}\t{1}\t{2}\t{3}\t{4}\t{5}", VARIABLE.VolumeLabel, VARIABLE.Name, VARIABLE.DriveType, VARIABLE.DriveFormat, VARIABLE.TotalSize, VARIABLE.AvailableFreeSpace); } } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.ReadKey(); } } class AAA { static void Main(string[] args) { FileClass Fc=new FileClass(); Fc.Drive(); // DirectoryInfo dtInfo=new DirectoryInfo("D://學習"); // Fc.DirectoryFun(dtInfo); // Fc.FileFun(dtInfo); // Fc.FileAndDirectoryFun(dtInfo); // Fc.recursionInfo(dtInfo); // Fc.RecurfileExe(dtInfo); // Console.ReadKey(); } }
這樣就可以訪問磁碟機資訊
下面來訪問目錄資訊,首先我把我的目錄檔案給大家看下,總的檔案是“學習” ,下面有5個目錄和一個PDF檔案,幾個目錄下還有檔案和子目錄。
下面來示範如何訪問目錄下的目錄 代碼如下。
/// <summary> /// 目錄下的檔案夾的遍曆 只能識別目錄(檔案夾) 不能識別檔案。 /// </summary> /// <param name="DtInfo"></param> public void DirectoryFun(DirectoryInfo DtInfo) { //擷取子目錄 DirectoryInfo[] Arry = DtInfo.GetDirectories(); Console.WriteLine(DtInfo.Name+"下的子目錄有:"); foreach (var VARIABLE in Arry) { Console.WriteLine(VARIABLE.Name); } Console.ReadKey(); } class AAA { static void Main(string[] args) { FileClass Fc=new FileClass(); // Fc.Drive(); DirectoryInfo dtInfo=new DirectoryInfo("D://學習"); Fc.DirectoryFun(dtInfo); // Fc.FileFun(dtInfo); // Fc.FileAndDirectoryFun(dtInfo); // Fc.recursionInfo(dtInfo); // Fc.RecurfileExe(dtInfo); // Console.ReadKey(); } }
下面示範如何訪問目錄下的檔案 代碼如下
/// <summary> /// 目錄下檔案的遍曆 /// </summary> /// <param name="dtInfo"></param> public void FileFun(DirectoryInfo dtInfo) { //擷取檔案 FileInfo []fileInfo = dtInfo.GetFiles(); Console.WriteLine(dtInfo.Name+"下的檔案有:"); foreach (var VARIABLE in fileInfo) { Console.WriteLine(VARIABLE.Name); } Console.ReadKey(); }class AAA { static void Main(string[] args) { FileClass Fc=new FileClass(); // Fc.Drive(); DirectoryInfo dtInfo=new DirectoryInfo("D://學習"); // Fc.DirectoryFun(dtInfo); Fc.FileFun(dtInfo); // Fc.FileAndDirectoryFun(dtInfo); // Fc.recursionInfo(dtInfo); // Fc.RecurfileExe(dtInfo); // Console.ReadKey(); } }
下面示範訪問目錄下的目錄和檔案,主要依靠FileSystemInfo類 代碼如下
/// <summary> /// 目錄下的檔案和子目錄的遍曆 /// </summary> /// <param name="dtInfo"></param> public void FileAndDirectoryFun(DirectoryInfo dtInfo) { //FileSystemInfo既可以訪問檔案 也可以訪問目錄 FileSystemInfo[] fileSystemInfo = dtInfo.GetFileSystemInfos(); Console.WriteLine(dtInfo.Name+"下的檔案和目錄有:"); foreach (var VARIABLE in fileSystemInfo) { Console.WriteLine(VARIABLE.Name); } Console.ReadLine(); } class AAA { static void Main(string[] args) { FileClass Fc=new FileClass(); // Fc.Drive(); DirectoryInfo dtInfo=new DirectoryInfo("D://學習"); // Fc.DirectoryFun(dtInfo); // Fc.FileFun(dtInfo); Fc.FileAndDirectoryFun(dtInfo); // Fc.recursionInfo(dtInfo); // Fc.RecurfileExe(dtInfo); // Console.ReadKey(); } }
下面示範遞迴訪問目錄下的所有目錄和檔案,包括子目錄下的子目錄和檔案,代碼如下。
/// <summary> /// 遞迴訪問一個檔案夾下所包括的所有檔案和目錄 及子目錄中的檔案 /// </summary> /// <param name="dtInfo"></param> public void recursionInfo(DirectoryInfo dtInfo) { //擷取子目錄和檔案 FileSystemInfo[] fileSystemInfo = dtInfo.GetFileSystemInfos(); foreach (var VARIABLE in fileSystemInfo) { //如果是檔案 則直接列印 if (VARIABLE is FileInfo ) { Console.WriteLine(VARIABLE.Name); } //如果是目錄 則先列印目錄名 然後訪問該目錄下的檔案和目錄 遞迴 else { //則先列印目錄名 Console.WriteLine(VARIABLE.Name); //然後訪問該目錄下的檔案和目錄 遞迴 recursionInfo((DirectoryInfo)VARIABLE); } } } class AAA { static void Main(string[] args) { FileClass Fc=new FileClass(); // Fc.Drive(); DirectoryInfo dtInfo=new DirectoryInfo("D://學習"); // Fc.DirectoryFun(dtInfo); // Fc.FileFun(dtInfo); // Fc.FileAndDirectoryFun(dtInfo); Fc.recursionInfo(dtInfo); // Fc.RecurfileExe(dtInfo); // Console.ReadKey(); } }
下面示範如何訪問指定目錄下所有指定類型的檔案,仍然是遞迴 這就需要用到Extension屬性 這代表檔案的副檔名。代碼如下
/// <summary> /// 遞迴訪問一個目錄下的所有exe檔案 需要用到Extension(副檔名) /// </summary> /// <param name="dtInfo"></param> public void RecurfileExe(DirectoryInfo dtInfo) { //擷取所有目錄和檔案 FileSystemInfo[] fileSystemInfos= dtInfo.GetFileSystemInfos(); foreach (var VARIABLE in fileSystemInfos) { //如果是exe檔案 則列印 if (VARIABLE.Extension == ".exe") { Console.WriteLine(VARIABLE.Name); } //如果是目錄 則遞迴 else if (VARIABLE is DirectoryInfo) { RecurfileExe((DirectoryInfo)VARIABLE); } } }class AAA { static void Main(string[] args) { FileClass Fc=new FileClass(); // Fc.Drive(); DirectoryInfo dtInfo=new DirectoryInfo("D://學習"); // Fc.DirectoryFun(dtInfo); // Fc.FileFun(dtInfo); // Fc.FileAndDirectoryFun(dtInfo); // Fc.recursionInfo(dtInfo); Fc.RecurfileExe(dtInfo); Console.ReadKey(); } }
以上就是關於磁碟機,目錄和檔案的訪問,比較簡單,希望對大家有協助。
C#對於磁碟機,目錄,檔案的訪問及遞迴