C#递归实现显示文件夹及所有文件并计算其大小的方法

 更新时间:2014年08月20日 11:10:20   投稿:shichen2014  
这篇文章主要介绍了C#递归实现显示文件夹及所有文件并计算其大小的方法,是遍历算法中比较典型的一种应用,有不错的学习借鉴价值,需要的朋友可以参考下

算法中递归的一个典型应用就是遍历目标文件夹,并把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算出目标文件夹的总大小。本文即以实例形式展示了C#递归实现显示目标文件夹的所有文件和文件夹,并计算目标文件夹的大小的方法。

具体实现代码如下:

class Program
{
  static void Main(string[] args)
  {
    Console.WriteLine("输入目标文件夹");
    string path = Console.ReadLine();
    FindFoldersAndFiles(path);
    Console.WriteLine("\r\n");
    Console.WriteLine("目标文件夹的总大小为:{0}个字节",GetDirectoryLength(path));
    Console.ReadKey();
  }
 
  //递归目标文件夹中的所有文件和文件夹
  private static void FindFoldersAndFiles(string path)
  {
    Console.WriteLine("文件夹" + path);
    //遍历目标文件夹的所有文件
    foreach (string fileName in Directory.GetFiles(path))
    {
      Console.WriteLine("┣" + fileName);
    }
 
    //遍历目标文件夹的所有文件夹
    foreach (string directory in Directory.GetDirectories(path))
    {
      FindFoldersAndFiles(directory);
    }
  }
 
  //递归计算文件夹大小
  static long GetDirectoryLength(string path)
  {
    if (!Directory.Exists(path))
    {
      return 0;
    }
 
    long size = 0;
 
    //遍历指定路径下的所有文件
    DirectoryInfo di = new DirectoryInfo(path);
    foreach (FileInfo fi in di.GetFiles())
    {
      size += fi.Length;
    }
 
    //遍历指定路径下的所有文件夹
    DirectoryInfo[] dis = di.GetDirectories();
    if (dis.Length > 0)
    {
      for (int i = 0; i < dis.Length; i++)
      {
        size += GetDirectoryLength(dis[i].FullName);
      }
    }
 
    return size;
  }
}

如上图所示,即为本文实例在遍历目标文件夹时,使用递归显示目标文件夹下所有文件夹和文件,并使用递归计算目标文件夹的总大小。

希望对大家学习C#的算法有一定帮助。

相关文章

  • C#中常用的正则表达式实例

    C#中常用的正则表达式实例

    正则表达式在程序设计中有着重要的位置,它经常被用于处理字符串信息,下面是C#中常用的正则表达式实例,感兴趣的朋友一起看看吧
    2016-10-10
  • C#使用自定义的泛型节点类实现二叉树类

    C#使用自定义的泛型节点类实现二叉树类

    这篇文章主要为大家详细介绍了C#如何使用自定义的泛型节点类 Node<T>实现二叉树类BinaryTree<T>及其方法,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • C#中比较常用的DateTime结构的使用方法

    C#中比较常用的DateTime结构的使用方法

    这篇文章主要介绍了C#中比较常用的DateTime结构的使用方法,需要的朋友可以参考下
    2015-11-11
  • C#中String与string的区别分析

    C#中String与string的区别分析

    这篇文章主要介绍了C#中String与string的区别,对于加深C#数据类型与类的理解有很好的参考借鉴价值,需要的朋友可以参考下
    2014-08-08
  • 基于C# wpf 实现Grid内控件拖动详情

    基于C# wpf 实现Grid内控件拖动详情

    这篇文章主要介绍了基于C# wpf 实现Grid内控件拖动,有一些业务场景中我们需要拖动控件,在Grid中就可以实现控件拖动,通过设置Margin属性即可,下面文章我们来看看具体的实现内容
    2021-11-11
  • C#利用Refit实现JWT自动续期详解

    C#利用Refit实现JWT自动续期详解

    Refit 是一个受到Square的Retrofit库(Java)启发的自动类型安全REST库,这篇文章主要为大家介绍了C#如何利用Refit实现JWT自动续期,感兴趣的可以了解下
    2023-08-08
  • c#保存窗口位置大小操作类(序列化和文件读写功能)

    c#保存窗口位置大小操作类(序列化和文件读写功能)

    这篇文章主要介绍了c#保存窗口位置大小操作类,其实就是把序列化和文件读写合到一块,大家参考使用
    2013-11-11
  • C# cefSharep控件的使用详情

    C# cefSharep控件的使用详情

    本文主要介绍了C# cefSharep控件的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 在C#中捕获内存不足异常

    在C#中捕获内存不足异常

    这篇文章主要介绍了在C#中捕获内存不足异常,下面文章内容围绕如何在C#中捕获内存不足异常的相关资料展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下,希望对你有所帮助
    2021-12-12
  • C#简单生成缩略图的方法

    C#简单生成缩略图的方法

    这篇文章主要介绍了C#简单生成缩略图的方法,涉及C#操作图片的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03

最新评论