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

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. 基于py3和pymysql查询某时间段的数据

    #python3 #xiaodeng #基于py3和pymysql查询某时间段的数据 import pymysql conn=pymysql.connect(user='root',passwd='r ...

  2. php反射API 获取属性/注释/方法 执行方法 实例

    <?php class Person { /** * 这里是对$_allowDynamicAttributes的注释信息 */ private $_allowDynamicAttributes ...

  3. .NET(C#):警惕PLINQ结果的无序性

    .NET(C#):警惕PLINQ结果的无序性 2012年08月10日 ⁄ 综合 ⁄ 共 620字 ⁄ 字号 小 中 大 ⁄ 评论关闭   PLINQ的运行结果是无序的,也就是不保持原来集合的顺序来操作 ...

  4. 微信小程序云端解决方案探索之路

    小程序刚推出的时候,很多人都觉得它就是 H5,因为开发小程序的三大语言和 HTML.CSS.JS 是一脉相承的,即使改变了扩展名也改不了其实质. 那么小程序的实质到底是不是 H5 呢?经过我们的论证分 ...

  5. 如何查看 EBS 环境上的 INV RUP 版本号

    select 'Application Environment: '|| i.instance_name || ', Host: '|| i.host_name ||', Application Re ...

  6. Android Intent之Action应用

    Log.i("txrjsms", "whereDoYouJumpFrom:"+getIntent().getPackage()); 结果是null Log.i( ...

  7. 【laravel5.4】安装指定版本的predis 和 处理laravel5.*安装使用Redis以及解决Class 'Predis\Client' not found和Fatal error: Non-static method Redis::set() cannot be called statically错误

    (predis下载地址:https://packagist.org/packages/predis/predis) 1.cmoposer 命令行: php composer require predi ...

  8. spring事务配置的两种方式

    spring所有的事务管理策略类都继承自org.springframework.transaction.PlatformTransactionManager接口. <!-- 事务管理器配置,单数 ...

  9. CentOS6.6安装S******Sockets服务端

    1.查看系统 [root@localhost ~]# cat /etc/issue CentOS release 6.6 (Final) [root@localhost ~]# uname -a Li ...

  10. (原)使用1080Ti显卡时安装ubuntu16.04.1及驱动的步骤

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6811328.html 参考网址: http://www.cnblogs.com/darkknightz ...