`
yyw84
  • 浏览: 77355 次
社区版块
存档分类
最新评论

获取某目录下的所有文件(包括子目录下文件)的数量(C#)

阅读更多
以前写过一个通过计算目录遍历所有文件和子目录的方法来获得某目录下的文件个数,结果发现速度极慢,远远不及系统本身目录属性里边显示的速度。

int fileNum = 0;
/**//// <summary>
/// 获取某目录下的所有文件(包括子目录下文件)的数量
/// </summary>
/// <param name="srcPath"></param>
/// <returns></returns>
public int GetFileNum(string srcPath)
{
    
try
    
{

        
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
        string[] fileList = System.IO.Directory.GetFileSystemEntries(srcPath);
        
// 遍历所有的文件和目录
        foreach(string file in fileList)
        
{
            
// 先当作目录处理如果存在这个目录就重新调用GetFileNum(string srcPath)
            if(System.IO.Directory.Exists(file))
                GetFileNum(file);
            
else
                fileNum
++;
        }

        
    }

    
catch (Exception e)
    
{
        MessageBox.Show (e.ToString());
    }

    
return fileNum;
}

近来发现了一个效率更高的方法,只需遍历目录就能获得文件个数,现分享一下
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(dirPath);  

public static int GetFilesCount(System.IO.DirectoryInfo dirInfo) 

    
int totalFile = 0
    totalFile 
+= dirInfo.GetFiles().Length; 
    
foreach (System.IO.DirectoryInfo subdir in dirInfo.GetDirectories()) 
    

        totalFile 
+= GetFilesCount(subdir); 
    }
 
    
return totalFile; 
}

分享到:
评论

相关推荐

    获取指定目录下的文件列表 获取指定目录下的所有文件名和路径(包括子目录)

    要获取指定目录(包括子目录)下的所有文件名和路径,可以使用`os.walk()`函数。以下是一个简单的例子: ```python import os def list_files(dir_path): for root, dirs, files in os.walk(dir_path): for file...

    c#遍历指定文件夹中的所有文件

    C#遍历指定文件夹中的所有文件是指使用C#语言编写程序来遍历指定文件夹中的所有文件和子目录。下面 将详细介绍如何使用C#来实现这一功能。 首先,需要使用DirectoryInfo类来表示文件夹。DirectoryInfo类提供了许多...

    c#目录文件统计器源码

    这个工具的主要功能是统计指定目录下的所有文件数量,不包括子目录中的文件和目录,并且能够列出所有不同文件类型的后缀名及其出现的次数。这个实用程序是用Visual Studio 2008开发的,为C#初学者和专业人士提供了一...

    C#删除过期文件

    1. **获取文件列表**:使用`Directory.GetFiles()`或`DirectoryInfo.GetFiles()`方法获取指定目录下的所有文件。如果需要递归查找子目录中的文件,可以使用`Directory.GetDirectories()`和`DirectoryInfo....

    获取文件夹和子文件夹所有文件

    在这个例子中,`os.walk(dir_path)`是一个生成器,它会返回三元组(root, dirs, files),其中root是当前目录的路径,dirs是一个包含当前目录下所有子目录的列表,files则是当前目录下所有非目录文件名的列表。...

    C#批量拷贝文件

    这可以通过`Directory.GetFiles()`方法实现,它接受一个目录路径作为参数,返回该目录下所有文件的字符串数组。如果需要递归获取子目录中的文件,可以使用`Directory.GetDirectories()`和递归函数。 2. **遍历文件*...

    在C#中给文件分类

    3. **文件属性检查**:使用`FileInfo`类的方法来获取文件的属性,如`Name`(文件名),`Extension`(文件扩展名),`CreationTime`(创建时间),`Length`(文件大小)等。这些属性可用于决定文件的分类标准。 4. *...

    C#获取本地磁盘目录完整源码_25.rar

    例如,`GetDirectories()`方法用于获取指定路径下的所有子目录,`GetFiles()`则用于获取指定目录中的所有文件。 2. **DirectoryInfo类**:`DirectoryInfo`是对`Directory`类的扩展,它提供了一个对象模型,可以创建...

    根据文件名称查找文件夹下的所有文件和子文件

    总结,这个任务的核心在于使用C#的文件系统操作类和递归算法,结合VS2008进行开发,实现根据文件名查找目录及其子目录下的所有匹配文件。这个过程中涉及到了文件系统API、编程逻辑设计和异常处理等多个方面,是C#...

    C# 对文件操作的方法(读取,删除,批量拷贝,删除

    例如,`GetPostfixStr`方法用于获取文件的后缀名,它通过查找"."的位置并返回其后的字符串来实现。这是一个静态方法,可以直接通过类名调用: ```csharp string filename = "example.txt"; string postfix = ...

    c#显示目录

    我们先获取当前目录下的所有文件并打印它们的文件名,然后获取子目录并递归调用`DisplayDirectoryTree`,每次增加一个层级。 为了显示`C:`盘的目录结构,只需调用这个函数传入`C:\`作为参数: ```csharp ...

    全盘遍历查找文件(多线程)

    `Directory.GetFiles()`方法可以用于获取指定目录下的所有文件,而`Directory.GetDirectories()`则能获取子目录,通过递归调用,我们可以遍历整个文件系统。 接下来,我们讨论如何引入多线程。在单线程环境下,全盘...

    .net查询目录及其所有子目录源码(0520_).rar

    // 获取当前目录下所有子目录 string[] subDirectories = Directory.GetDirectories(directory); foreach (string subDir in subDirectories) { TraverseDirectory(subDir); // 递归遍历子目录 } } } ``` 这...

    C#批量重命名文件

    如果需要递归遍历子目录,可以使用`GetFiles()`与`GetDirectories()`结合。 3. **重命名文件**:`FileInfo`类有一个`Rename()`方法,可以用于改变文件的名称。在重命名前,需要确保新名称不与现有文件冲突,否则会...

    .net查询目录及其所有子目录源码(0515).rar

    标题中的".net查询目录及其所有子目录源码(0515).rar"指的是一个使用.NET框架,可能是C#语言编写的程序,该程序能够遍历指定目录及其所有子目录,并进行某种操作或查询。这个压缩包可能包含了实现这一功能的源代码...

    .net查询目录及其所有子目录源码2019

    标题中的".net查询目录及其所有子目录源码2019"指的是在.NET框架下,使用C#编程语言实现的一个功能,即遍历指定目录及其所有子目录,并进行某些操作,比如查找特定文件、统计文件数量等。这个功能在很多实际应用场景...

    遍历所有文件

    例如,Python的`os.walk`函数就提供了一个方便的迭代器,它可以遍历指定路径下的所有文件和子目录,包括子目录中的文件。 6. 并行遍历: - 对于大型文件系统,为了提高效率,可以考虑使用并行或并发遍历。这通常...

    VS2010 C#文件统计工具源代码

    2. **过滤子文件夹**:工具提供了选项来决定是否包含子文件夹的文件在统计范围内,这样用户可以根据需求选择只统计顶层文件夹的文件,或者包括所有子文件夹的文件。 3. **文件名显示**:工具会列出所选文件夹内所有...

    c# 文件多线程扫描,这次是真的,上次真是。。。汗。。。

    在C#编程中,文件扫描是一项常见的任务,特别是在大数据处理、文件系统索引或病毒扫描等场景下。然而,单线程的文件扫描可能会成为性能瓶颈,特别是在处理大量文件时。因此,使用多线程技术可以显著提升扫描速度,...

    C# 动态搜索文件或文件夹

    如果需要搜索子目录,可以传入`SearchOption.AllDirectories`参数。 - 找到匹配的文件或文件夹后,将它们添加到显示结果的控件中,如ListView的Items集合。 2. **菜单窗体设计**: - 菜单窗体通常包括一个“文件...

Global site tag (gtag.js) - Google Analytics