C#對於磁碟機,目錄,檔案的訪問及遞迴

來源:互聯網
上載者:User

標籤:

這兒所說的並不是對檔案進行讀寫,只是針對於擷取檔案和目錄等。

主要分為對磁碟機,目錄和檔案三大類。

對磁碟機需要用到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#對於磁碟機,目錄,檔案的訪問及遞迴

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.