码迷,mamicode.com
首页 > Windows程序 > 详细

C#对于驱动器,目录,文件的访问及递归

时间:2015-09-11 01:22:53      阅读:314      评论:0      收藏:0      [点我收藏+]

标签:

这儿所说的并不是对文件进行读写,只是针对于获取文件和目录等。

主要分为对驱动器,目录和文件三大类。

对驱动器需要用到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#对于驱动器,目录,文件的访问及递归

标签:

原文地址:http://www.cnblogs.com/Huaran1chendu/p/4798864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!