欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-12-22 11:26:28
算法中递归的一个典型应用就是遍历目标文件夹,并把该文件夹下的所有文件和文件夹打印或显示出来,还可以递归计算出目标文件夹的总大小。本文即以实例形式展示了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#的算法有一定帮助。

上一篇:

下一篇: