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

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

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

对驱动器需要用到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();
        }
    }

以上就是关于驱动器,目录和文件的访问,比较简单,希望对大家有帮助。

时间: 2024-10-05 23:50:08

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

驱动器-目录-文件

c#提供了操作驱动器,目录以及文件的相关类,可以很方便的进行目录文件的操作. Driveinfo获取驱动器相关信息 以下为获取驱动器信息方法: // GetDrives() method retrieves the drive names of all logical drives on a computer. DriveInfo[] drives = DriveInfo.GetDrives(); Console.WriteLine(drives.Length); foreach (DriveI

01 安装apache php配置 时区 环境变量 安装mysql 虚拟主机 文件夹访问权限 目录别名

php介绍 简介与历史 应用领域: php运行环境 php语言运行原理 安装apache: PHP的命令行运行模式(独立运行): 配置apache以运行php网页 配置php的基本运行环境 确定php配置文件(php.ini)的位置: 配置时区: 设置环境变量 检测apache配置文件语法 配置数据库连接机制 安装mysql数据库 虚拟主机配置 端口监听: 主机配置关键项 配置文件夹访问权限 主机别名设置 文件夹访问控制的文件控制方式 目录别名设置Alias 多站点配置: php介绍 简介与历史

wwwscan网站目录文件批量扫描工具

准备一个比赛样题里面给的一个扫描的工具: 不知道怎么用就上网百度了一下果然有关于这个软件的两篇介绍(感觉写的很好),第一篇介绍的应该和我的工具一样,也给了例子(现在Google不能访问了)和参数介绍,第二篇作者可能自己"升级"过软件也提供了下载地址.但是有个问题是:我机器上跑感觉那些多进程.端口和超时等参数都是虚设的,我试验的结果是我的软件只要输入ip或域名就可以运行扫描. ps:直接copy 文章来源:http://blog.chinaunix.net/uid-26726420-id

ThinkPHP第二课 框架MVC目录和URL访问方式

第二课 框架MVC目录和URL访问方式 1.说明: ThinkPHP是基于MVC的框架,认识框架目录将更好的实现分层,掌握ThinkPHP.URL访问就是访问框架的控制器(MVC中的C),共有四种方式,框架中的C起到分模块的作用. url的4种访问方式: 1.PATHINFO 模式 -- 重点!!!!!! http://域名/项目名/入口文件/模块名/方法名/键1/值1/键2/值2 2.普通模式 http://域名/项目名/入口文件?m=模块名&a=方法名&键1=值1&键2=值2

C/C++ 遍历目录文件,默认目录下

每次遇到这样的问题总会折腾很久,到网上搜,或者查资料,弄了很多次,但就是没记住,这次写程序又遇到了,干脆就把它都弄清楚了,然后顺便在这里记录一下,以后再遇到就不用到处去找了. 用 C/C++ 遍历目录文件主要有两种方式,分别对应在 Windows VS 环境下和 Linux\Unix 环境下的方法,它们各自所使用的函数如下: (Windows VS)_findfirst, _findnext, _findclose (Linux\Unix)opendir, readdir, closedir 下

tomcat 目录文件夹作用(转)

(一):目录结构 tomcat的目录结构如下:  目录名 简介  bin 存放启动和关闭tomcat脚本  conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml  work 存放jsp编译后产生的class文件  webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录  .在(包)WEB-INF/src中写的.java文件会被自动编译成.class文件后转存到WEB-INF文件夹下的classes文件夹下.logs 存放日志文件  lib

Tomcat学习之二:tomcat安装、配置及目录文件说明

我们看到tomcat目录/bin文件夹里有个tomcat6w.exe,顾名思义就是tomcat以window方式显示控制台.第1次点击打开它时候,可能会提示:tomcat指定的服务未安装,此时我们可以这样解决它. 打开命令行提示符窗口-> 进入Tomcat安装目录-> 进入bin目录下-> 输入:service.bat install 即可,如图操作,tomcat目录按自己电脑上的来即可 <!--[endif]--> 这样就可以让tomcat以window方式显示控制台.点击

控制对文件的访问

第二单元 ACL :访问控制列表 一 权限列表的读取 getfacl   filename # file:  file 文件名称 # owner:root 文件所有人 # group: root文件所有组 user::rw- 用户权限 user:westos:rwx 特殊指派用户及权限 group::rw-     组权限 mask::rwx      可指派最大权限 other::r - -   其他人权限 二 setfacl 用于设置或修改文件的 ACL(访问控制列表) 修改文件的访问控制列

Linux系统下目录文件配置

刚刚接触Linux,对于Linux系统下的目录配置进行了一些研究,为了避免以后误操作这些目录,建议大家还是记忆一下相关的配置! 总结 Linux 根目录主要配置 目录 文件配置内容 /bin 单用户维护模式下还能被操作的命令 /boot 开机会使用到的文件,包括Linux内核文件以及开机菜单与开机所需配置文件 /dev 设备以及设备接口文件,访问该目录下文件相当于访问某设备 - /dev下的重要文件:/dev/null,/dev/zero,/dev/tty /etc 系统主要的配置文件,比如账号