博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)...
阅读量:7200 次
发布时间:2019-06-29

本文共 3806 字,大约阅读时间需要 12 分钟。

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

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,获得指定目录下的所有文件:
"); List
list1 = GetFilesByDir(filePath); foreach (FileInfo fi in list1) { Response.Write("完整路径:" + fi.FullName.ToString() + " 文件名:" + fi.Name + "
"); } Response.Write("
测试2,获得指定目录及其子目录的所有文件:
"); List
list2 = GetAllFilesByDir(filePath); foreach (FileInfo fi in list2) { Response.Write("完整路径:"+fi.FullName.ToString() +" 文件名:"+fi.Name+ "
"); } Response.Write("
测试3,列出指定目录下及所有子目录及子目录里更深层目录里的文件:
"); GetAllFiles(filePath); } ///
/// 获得指定目录下的所有文件 /// ///
///
public List
GetFilesByDir(string path) { DirectoryInfo di = new DirectoryInfo(path); //找到该目录下的文件 FileInfo[] fi = di.GetFiles(); //把FileInfo[]数组转换为List List
list = fi.ToList
(); return list; } ///
/// 获得指定目录及其子目录的所有文件 /// ///
///
public List
GetAllFilesByDir(string path) { DirectoryInfo dir = new DirectoryInfo(path); //找到该目录下的文件 FileInfo[] fi = dir.GetFiles(); //把FileInfo[]数组转换为List List
list = fi.ToList
(); //找到该目录下的所有目录里的文件 DirectoryInfo[] subDir = dir.GetDirectories(); foreach (DirectoryInfo d in subDir) { List
subList = GetFilesByDir(d.FullName); foreach (FileInfo subFile in subList) { list.Add(subFile); } } return list; } ///
/// 列出指定目录下及所其有子目录及子目录里更深层目录里的文件(需要递归) /// ///
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 + "
"); } //找到该目录下的所有目录再递归 DirectoryInfo[] subDir = dir.GetDirectories(); foreach (DirectoryInfo d in subDir) { GetAllFiles(d.FullName); } } }}

 

 

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

 

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

 

转载地址:http://uyzum.baihongyu.com/

你可能感兴趣的文章
Windows Phone 8.1 Update 2(GDR2)更新亮点介绍
查看>>
Docker images
查看>>
7 天玩转 ASP.NET MVC — 第 5 天
查看>>
用了OneAPM CT,宕机早知道!
查看>>
程序员:如何接手垃圾代码?
查看>>
获取页面中任意一个元素距离body的偏移量
查看>>
使用POI读写word doc文件
查看>>
rsycn相关知识
查看>>
OpenJudge 4146:数字方格 java穷举法
查看>>
搭建linuxFTP的步骤
查看>>
跟我一起学docker(八)--Dockerfile
查看>>
做SEO,选择大于努力
查看>>
php实现下载文件(浏览器不直接打开)
查看>>
数据库监听卡住 Oracle lsnrctl status 卡在connecting ......
查看>>
python web开发-flask调试模式
查看>>
3分钟看懂linux磁盘划分
查看>>
vim 向上向下匹配
查看>>
MySQL DBA面试总结
查看>>
Linux-LAMP 默认页,虚拟主机
查看>>
Node.js 特点
查看>>