//遍历一个目录下所有的文件列表,代码实例

DirectoryInfo dir = new DirectoryInfo(folderName);
var list = GetAll(dir);

/// <summary>
        /// 搜索文件夹中的文件
        /// </summary>
        /// <param name="dir"></param>
        /// <returns></returns>
        private static List<string> GetAll(DirectoryInfo dir)
        {
            List<string> fileList = new List<string>();
            FileInfo[] allFile = dir.GetFiles();
            foreach (FileInfo fi in allFile)
            {
                fileList.Add(fi.FullName);
            }
            DirectoryInfo[] allDir= dir.GetDirectories();
            foreach (DirectoryInfo d in allDir)
            {
                fileList.AddRange(GetAll(d));
            }
            return fileList;
        }

File------实用类,提供许多静态方法,用于移动、删除、和复制文件。

Directory------实用类,提供许多静态方法,用于移动、删除和复制目录。

FileInfo------表示磁盘上的物理文件,具有可以处理此文件的方法,要完成对文件的读写工作,就必须创建Stream对像。

DirectoryInfo------表示磁盘上的物理目录,具有可以处理此目录的方法

这里提供了三种方法:

1、获得指定目录下的所有文件

2、获得指定目录及其子目录的所有文件

3、列出指定目录下及所其有子目录及子目录里更深层目录里的文件(需要递归)

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO; namespace WebAppFile
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string filePath=@"c:/log/";
Response.Write("测试1,获得指定目录下的所有文件:<br>");
List<FileInfo> list1 = GetFilesByDir(filePath);
foreach (FileInfo fi in list1)
{
Response.Write("完整路径:" + fi.FullName.ToString() + " 文件名:" + fi.Name + "<br>");
} Response.Write("<br><br>测试2,获得指定目录及其子目录的所有文件:<br>");
List<FileInfo> list2 = GetAllFilesByDir(filePath);
foreach (FileInfo fi in list2)
{
Response.Write("完整路径:"+fi.FullName.ToString() +" 文件名:"+fi.Name+ "<br>");
} Response.Write("<br><br>测试3,列出指定目录下及所有子目录及子目录里更深层目录里的文件:<br>");
GetAllFiles(filePath); } /// <summary>
/// 获得指定目录下的所有文件
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public List<FileInfo> GetFilesByDir(string path)
{
DirectoryInfo di = new DirectoryInfo(path); //找到该目录下的文件
FileInfo[] fi = di.GetFiles(); //把FileInfo[]数组转换为List
List<FileInfo> list = fi.ToList<FileInfo>();
return list;
} /// <summary>
/// 获得指定目录及其子目录的所有文件
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public List<FileInfo> GetAllFilesByDir(string path)
{
DirectoryInfo dir = new DirectoryInfo(path); //找到该目录下的文件
FileInfo[] fi = dir.GetFiles(); //把FileInfo[]数组转换为List
List<FileInfo> list = fi.ToList<FileInfo>(); //找到该目录下的所有目录里的文件
DirectoryInfo[] subDir = dir.GetDirectories();
foreach (DirectoryInfo d in subDir)
{
List<FileInfo> subList = GetFilesByDir(d.FullName);
foreach (FileInfo subFile in subList)
{
list.Add(subFile);
}
}
return list;
} /// <summary>
/// 列出指定目录下及所其有子目录及子目录里更深层目录里的文件(需要递归)
/// </summary>
/// <param name="path"></param>
public void GetAllFiles(string path)
{
DirectoryInfo dir = new DirectoryInfo(path); //找到该目录下的文件
FileInfo[] fi = dir.GetFiles();
foreach (FileInfo f in fi)
{
Response.Write("完整路径:" + f.FullName.ToString() + " 文件名:" + f.Name + "<br>");
} //找到该目录下的所有目录再递归
DirectoryInfo[] subDir = dir.GetDirectories();
foreach (DirectoryInfo d in subDir)
{
GetAllFiles(d.FullName);
}
}
}
}
运行结果:

测试1,获得指定目录下的所有文件:
完整路径:c:/log/--.xml 文件名:--.xml
完整路径:c:/log/--.xml 文件名:--.xml 测试2,获得指定目录及其子目录的所有文件:
完整路径:c:/log/--.xml 文件名:--.xml
完整路径:c:/log/--.xml 文件名:--.xml
完整路径:c:/log/LogBak/--.xml 文件名:--.xml 测试3,列出指定目录下及所有子目录及子目录里更深层目录里的文件:
完整路径:c:/log/--.xml 文件名:--.xml
完整路径:c:/log/--.xml 文件名:--.xml
完整路径:c:/log/LogBak/--.xml 文件名:--.xml
完整路径:c:/log/LogBak/TempLog/--.xml 文件名:--.xml

关于第3种列出指定目录下及其所有子目录及子目录里更深层目录里的文件(需要递归),如何写成一个方法呢,希望大家来帮忙。

C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)的更多相关文章

  1. 【Lua】关于遍历指定路径下所有目录及文件

    关于Lua中如何遍历指定文件路径下的所有文件,需要用到Lua的lfs库. 首先创建一个temp.lua文件,用编辑器打开: 要使用lfs库,首先需要把lfs库加载进来 require("lf ...

  2. Python小代码_15_遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间

    遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间 import osimport datetime def print_tree(dir_path): for ...

  3. test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下

    test文件夹,测试类是放在src目录下的,test测试代码是代码啊,当然要放在代码文件夹下 Maven的标准工程结构 Maven的标准工程结构如下: |-- pom.xml(maven的核心配置文件 ...

  4. C#遍历指定路径下的目录

    通过指定路径訪问路径下的文件.在C#的开发中主要利用了Directory类和DirectoryInfo类,简要介绍Directory类中的成员:命名空间 System.IO 命名空间 1.Create ...

  5. 33.2 案例:输出指定目录下的所有java文件名(包含子目录)

    package day32_file_文件和目录操作; import java.io.File; public class test_输出指定目录下所有的java文件名 { public static ...

  6. eclipse_neon 的Spket 目录下只有一个Task Tags,没有其他的选项,导致没有办法添加提示文件! 添加sdk文件之后还是没有办法显示的解决办法

    问题解决办法: 将 spket-1.6.23的安装包里面的features  plugins 单独复制到D:\eclipse_neon\dropins 目录下,重启一下eclipse即可正常显示! 添 ...

  7. C#中获取指定路径下特定开头和后缀的所有文件

    场景 指定一个文件路径,获取当前路径下所有文件,并筛选出以指定内容开头和结尾的文件. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 ...

  8. C#中获取指定路径下指定后缀名的所有文件的路径的list

    场景 指定一个路径和后缀名,查找这个路径下所有以此后缀名结尾的文件. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取 ...

  9. asp.net MVC 中呈现指定区域下的分部视图

    Html.RenderAction() 可以呈现分部视图. asp.net MVC就是有这种好处,可以将多个子视图无缝合成到一个视图上再输出,那么开发的时候,能够进行模块化开发.看上去同属一个页面上的 ...

随机推荐

  1. redis实现简单的分布式锁

    在分布式系统中多个请求并发对少数资源进行争抢,例如10个人同时秒杀一件商品,如果不用分布式的锁进行处理(当然还有其它的处理方案),则很容易出现多个人抢到一个商品(超卖)的情况,用redis可以比较容易 ...

  2. 要想找出包含“w”的名字

    要想找出包含“w”的名字:mysql> SELECT * FROM pet WHERE name LIKE '%w%'“_”:匹配任何单个字符“%”:匹配任意数目字符(包括零字符)

  3. MySQL的binlog操作

    1. MySQL的binlog有三种模式: statement, row and mixed, 从5.1开始支持row, 默认是row模式 2. 设置参数 # 要配置在mysqld下 [mysqld] ...

  4. TCP/IP协议——TCP/IP协议栈及框架

    TCP/IP协议同ISO/OSI模型一样,也可以安排成栈形式.但这个栈不同于ISO/OSI版本,比ISO/OSI栈少,所以又称之为短栈.另外,需要知道的是:TCP/IP协议栈只是许多支持ISO/OSI ...

  5. Java用freemarker导出word

    概述 最近一个项目要导出word文档,折腾老半天,发现还是用freemarker的模板来搞比较方便省事,现总结一下关键步骤,供大家参考,这里是一个简单的试卷生成例子. 详细 代码下载:http://w ...

  6. 在quartz的Job中获得Spring的WebApplicationContext或ServletContext

    有时候我们需要在web工程中定时器类里面获得spring的IOC容器,即WebApplicationContext,用它来获取实现了某接口的所有的bean,因为@Autowired貌似只能注入单个be ...

  7. Python实现鸢尾花数据集分类问题——基于skearn的NaiveBayes

    Python实现鸢尾花数据集分类问题——基于skearn的NaiveBayes 代码如下: # !/usr/bin/env python # encoding: utf-8 __author__ = ...

  8. mysql--SQL编程(关于mysql中的日期) 学习笔记2

    一.mysql数据库中的date1.DATETIME和DATE:DATETIME占用8个字节,日期范围为"1000-01-01 00:00:00"到"9999-12-31 ...

  9. cobbler启动问题

    [root@localhost ~]# cobblerTraceback (most recent call last): File "/usr/bin/cobbler", lin ...

  10. Android APP通用型拒绝服务、漏洞分析报告

    点评:记得曾经有段时间很多SRC平台被刷了大量APP本地拒绝服务漏洞(目前腾讯金刚审计系统已经可检测此类漏洞),移动安全团队发现了一个安卓客户端的通用型拒绝服务漏洞,来看看他们的详细分析吧. 0xr0 ...