C#递归实现显示文件夹及所有文件并计算其大小的方法
作者:shichen2014 发布时间:2023-09-13 01:56:01
标签: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#的算法有一定帮助。


猜你喜欢
- Java面向对象之猜拳游戏,供大家参考,具体内容如下1 要求与电脑进行猜拳并记录分数。2 Computer.java 源代码(电脑自动随机出
- 最近一门课要求编写一个上位机串口通信工具,我基于Java编写了一个带有图形界面的简单串口通信工具,下面详述一下过程,供大家参考 ^_^一:首
- springcloud eureka切换nacos配置中心地址: http://10.166.9.7:8848/nacos/bootstra
- 平面区域填充算法是计算机图形学领域的一个很重要的算法,区域填充即给出一个区域的边界(也可以是没有边界,只是给出指定颜色),要求将边界范围内的
- 前言这是该工具的github地址:https://github.com/pingfangushi/screw一、引入pom.xml依赖<
- socket 编程时的发送与接收数据时的问题在编写一个测试方法时,需要用启动一个程序监听一个端口,测试发送的数据是事正常,但是总是出现两个问
- 今天遇到这样一个bug:客户端POST到服务器的一段数据导致服务器端发生未知异常。服务器端确认是编码转换错误。于是截取网络数据包进行分析,发
- Android AsyncTask详解及使用方法 简介: AsyncTask就是一个封装过的后
- 本文实例讲述了C#实现将浮点数表示的货币数量以汉字大写形式输出的方法。分享给大家供大家参考。具体如下:1.函数代码注:本段代码中能转化的最大
- 前言在你的工作中,有时候可能会看到 @Accessors(chain = true) 这样的注解,他是 lo
- 目录(?)[-]一扩展javalangThread类二实现javalangRunnable接口三Thread和Runnable的区别四线程状
- 要想实现android手机通过扫描名片,得到名片信息,可以使用脉可寻提供的第三方SDK,即Maketion ScanCard SDK,脉可寻
- 在 javax.validation.constraints包中定义了非常多的校验注解,引入依赖:<dependency> &n
- WebService服务端代码public class WebServiceDemo : System.Web.Services.WebSe
- 一、只读自动属性(Read-only auto-properties) C# 6之前我们构建只读自动属性: public stri
- 用Java来实现简单的拼图游戏,供大家参考,具体内容如下首先我们看一下这个拼图小游戏的效果图:创建一个名称为MedleyGame的类,该类继
- 具体代码如下所示:package com.example.studyapplication.fragment;import android.
- 前言前两篇我们详细了解了 findById 和 findAll 以及 findAll 的分页查询,如果说JPA只有上面的两种查询功能,那就太
- 1、简介对于数据访问层,无论是SQL(关系型数据库) 还是NOSQL(非关系型数据库),SpringBoot 底层都是采用 SpringDa
- 最近有个老项目想逐步将新业务的数据放到新的数据库,以前的业务还得连接以前的数据库,于是需要整合多数据源 。多数据源实际上是继承了Abstra