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

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. django之创建第2个项目

    如上为项目结构 1.创建项目helloworld 2.把目录切换到django/helloworld目录下创建blog站点 3.需要修改的信息如下: 1)修改blog站点的views.py # Cre ...

  2. python模块之HTMLParser解析出URL链接

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser解析出URL链接 #http://www.cnblogs.com/mf ...

  3. 如何实现两台Domino之间的相互访问

    一)交叉验证    1启动Administrator软件,连接到您的服务器,点击"配置"标签.    2点击右边屏幕"工具"--"验证字"--"交叉验证"    3选择您自己的cert.id,输入其口 ...

  4. 转 CentOS下php安装mcrypt扩展

    (以下步骤均为本人实际操作,可能与你的安装方法有所区别,但我会尽量排除疑惑) 大致步骤(1)安装mcrypt,(2)安装php对mcrypt的扩展,(3)重启apache (1).确认你的linux没 ...

  5. java.lang.String cannot be cast to scala.runtime.Nothing Scala中的Nothing类型

    经常在写Rdd的时候, 如:  val OWNER_ID=row.getAs("OWNER_ID")  等, 运行是可能会报异常 : java.lang.String cannot ...

  6. stm32点亮LED 测试代码及目录结构

    . main.c - 使用PB12, PB13, PB14, PB15, PB5, PB6, PB7 这七个PB口点亮LED. 注意PB3和PB4是特殊口, 直接调用无效. #include &quo ...

  7. 怎样查看SSL证书的有效期?自动续期是否生效?

    前面一篇教程教大家如何能够把网站的 HTTPS 的 SSL 证书自动续期.料神米课的学员动手能力都很强,已经很多都成功把证书续期了.但怎么看证书续期是否成功了呢? 使用火狐 firefox 浏览器就可 ...

  8. Spring 多数据源事务配置问题

    2009-12-22 在SpringSide 3 中,白衣提供的预先配置好的环境非常有利于用户进行快速开发,但是同时也会为扩展带来一些困难.最直接的例子就是关于在项目中使用多个数据源的问题,似乎 很难 ...

  9. iOS 中的静态库与动态库,区别、制作和使用

    如果我们有些功能要给别人用,但是又不想公开代码实现,比如高德地图.第三方登录分享等等,这时候我们就要打包成库了.库分静态库和动态库两种: 静态库:以.a 和 .framework为文件后缀名.动态库: ...

  10. 【LeetCode】213. House Robber II

    House Robber II Note: This is an extension of House Robber. After robbing those houses on that stree ...