用C#实现获取文件夹大小的源代码

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FileList
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine();
            long length = GetDirectoryLength(@"D:\Folder\碟四");
            Console.WriteLine(length.ToString("N0"));
            Console.WriteLine();
            long length2 = FileSize(@"D:\Folder\碟四");
            Console.WriteLine(length2.ToString("N0"));
            Console.WriteLine(DateTime.Now.Millisecond);
        }

        public static long GetDirectoryLength(string dirPath)
        {
            //判断给定的路径是否存在,如果不存在则退出
            if (!Directory.Exists(dirPath))
                return 0;
            long len = 0;

            //定义一个DirectoryInfo对象
            DirectoryInfo di = new DirectoryInfo(dirPath);

            //通过GetFiles方法,获取di目录中的所有文件的大小
            foreach (FileInfo fi in di.GetFiles())
            {
                len += fi.Length;
            }

            //获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归
            DirectoryInfo[] dis = di.GetDirectories();
            if (dis.Length > 0)
            {
                for (int i = 0; i < dis.Length; i++)
                {
                    len += GetDirectoryLength(dis[i].FullName);
                }
            }
            return len;
        }

        //也是利用递归的思想,只不过是通过File类的Exits方法来判断
        //所给路径中所对应的是否为文件
        public static long FileSize(string filePath)
        {
            long temp = 0;

            //判断当前路径所指向的是否为文件
            if (File.Exists(filePath) == false)
            {
                string[] str1 = Directory.GetFileSystemEntries(filePath);
                foreach (string s1 in str1)
                {
                    temp += FileSize(s1);
                }
            }
            else
            {
                //定义一个FileInfo对象,使之与filePath所指向的文件向关联,
                //以获取其大小
                FileInfo fileInfo = new FileInfo(filePath);
                return fileInfo.Length;
            }
            return temp;
        }
    }
}
时间: 2024-10-29 17:20:16

用C#实现获取文件夹大小的源代码的相关文章

Linux C++获取文件夹大小

项目中要计算指定文件夹的大小.百度查到这篇文章,https://my.oschina.net/Tsybius2014/blog/330628方法可行,运行正确. 拿到我们的项目中,却遇到一些问题:程序中一些读文件的代码,开始报异常,都不到文件.这些都是以前没有遇到过的问题.到底是什么情况呢?排查了好久,终于发现使用该文章提供的计算文件夹大小的函数(暂且叫做GetDirectorySize),其中有改变当前目录的代码: chdir(dir); 我们的项目是多线程的,一个线程调用GetDirecto

Powershell获取文件夹大小和排序【层级关系】【大小】【名称】

#***************************************************************************************** #使用示例: #示例:GetFoldersize.ps1 -FolderPath "D:\Exchange Server" -sort Layer -Class 3 -Size 0.5 #获取"D:\Exchange Server"目录下的3层以内的大于0.5GB的子文件夹,并按照子文件

python3获取文件及文件夹大小

获取文件大小 os.path.getsize(file_path):file_path为文件路径 >>> import os >>> os.path.getsize('d:/svn/bin/SciLexer.dll') 1479904 获取文件夹大小 遍历文件夹,将所有文件大小加和.遍历文件夹使用os.walk函数 import os from os.path import join, getsize def getdirsize(dir): size = 0 for

【Android笔记】Android统计文件夹大小,删除文件夹下的所有文件方法

1.获取文件夹大小: 1 /** 2 * 获取文件夹大小 3 * @param file File实例 4 * @return long 5 */ 6 public static long getFolderSize(java.io.File file){ 7 8 long size = 0; 9 try { 10 java.io.File[] fileList = file.listFiles(); 11 for (int i = 0; i < fileList.length; i++) 12

统计文件夹大小的函数

#统计文件夹大小的函数 import os #导入os模块 def getdirsize(dirpath): #定义一个函数 #设置一个用于累加大小变量 total = 0 #获取文件夹中所有文件和文件夹 allnames = os.listdir(dirpath) #遍历所有文件和文件夹,将他们的大小累加起来 /etc/acpi/powerbtn.sh for i in allnames: #遍历同时组合完整路径 fullpath = os.path.join(dirpath,i) #判断是文

获取文件夹中的图标资源

实现效果: 知识运用: API函数SHGetFileInfo //获取包含在可执行文件或Dll中的图标数或图标资源 [DllImport("shell32.dll", EntryPoint = "SHGetFileInfo")] public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttribute, ref SHFILEINFO psfi, uint cbSizeFileInfo

Pyhon 获取文件夹的大小统计

通过Python 实现文件夹大小的统计:主要是通过了 import os 中的几个方法来实现.         --Zero Python OS 文件/目录方法 首先介绍用到的几个函数,写了一个小demo便于理解. os.getcwd() 返回当前路径. os.listdir (path) 返回当前路径下的文件夹与文件(不向下二级递归). os.path.join() join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. os.path 让join()识别为路径,根据系统自动

C#获取文件夹及文件的大小与占用空间的方法

本文详细介绍了利用C#实现根据路径,计算这个路径所占用的磁盘空间的方法 . 网上有很多资料都是获取文件夹/文件的大小的.对于占用空间的很少有完整的代码.这里介绍实现这一功能的完整代码,供大家参考一下. 首先说下文件夹/文件大小与占用空间的区别. 这个是硬盘分区格式有关 大小是文件的实际大小,而占用空间是占硬盘的实际空间 以FAT32格式为例,硬盘的基本存储单位是簇,在FAT32中一簇是4KB 那么,也就是说即使文件只有1个字节,在硬盘上也要占到4KB的空间 如果文件是4KB零1个字节,那就要占用

FileSizeUtil【获取文件夹或文件的大小】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 获取文件夹或者文件的大小,可以指定单位,也可以自动计算合适的单位值. 效果图 代码分析 常用的方法: getFolderOrFileSize(String filePath,int sizeType)[获取指定文件或指定文件夹的的指定单位的大小] getAutoFolderOrFileSize(String filePath)[自动计算指定文件或指定文件夹的大小] 使用步骤 一.项目组织结构图 注意事项: 1.导入类文件后需要chang