C#_IO操作_查询指定文件夹下的每个子文件夹占空间的大小
1.前言
磁盘内存用掉太多,想查那些文件夹占的内存比较大,再找出没有用的文件去删除。
2.代码
- static void Main(string[] args)
- {
- while (true)
- {
- //指定文件夹下的每个子文件夹占空间的大小
- Console.WriteLine("--------------------查询指定路径下所有的子文件夹占空间大小-------------------");
- Console.WriteLine("请输入要查询的路径:");
- string Path = Console.ReadLine();
- Dictionary<string,long> dic = new Dictionary<string, long>();
- //路径是否存在
- if (!Directory.Exists(Path))
- {
- Console.WriteLine("输入路径不存在,请输入正确的路径!");
- Console.WriteLine("");
- }
- else
- {
- //定义一个DirectoryInfo对象
- DirectoryInfo di = new DirectoryInfo(Path);
- //通过GetFiles方法,获取di目录中的所有文件
- foreach (FileInfo fi in di.GetFiles())
- {
- //把信息加入到字典中
- dic.Add(fi.FullName, fi.Length);
- }
- //获取di中所有的文件夹,并存到一个新的对象数组中
- DirectoryInfo[] dis = di.GetDirectories();
- if (dis.Length > )
- for (int i = ; i < dis.Length; i++)
- {
- long length = GetDirectoryLength(dis[i].FullName);
- dic.Add(dis[i].FullName, length);
- }
- //linq写法,对Dictionary按value排序
- var dicSort = from objDic in dic orderby objDic.Value descending select objDic;
- foreach (KeyValuePair<string,long> dic1 in dicSort)
- {
- //KB转为M 要/1024变K 再/1024变M
- Console.WriteLine(string.Format("{0}:{1}{2}", dic1.Key.ToString(), Math.Round(Convert.ToDouble(dic1.Value) / / , ),"M"));
- }
- }
- }
- }
- //指定文件夹占空间大小
- public static long GetDirectoryLength(string dirPath)
- {
- //判断给定的路径是否存在,如果不存在则退出
- if (!Directory.Exists(dirPath))
- return ;
- long len = ;
- //定义一个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 > )
- {
- for (int i = ; i < dis.Length; i++)
- {
- len += GetDirectoryLength(dis[i].FullName);
- }
- }
- return len;
- }
运行结果:
C#_IO操作_查询指定文件夹下的每个子文件夹占空间的大小的更多相关文章
- MATLAB读取一个文件夹下的多个子文件夹中的多个指定格式的文件
MATLAB需要读取一个文件夹下的多个子文件夹中的指定格式文件,这里以读取*.JPG格式的文件为例 1.首先确定包含多个子文件夹的总文件夹 maindir = 'C:\Temp Folder'; 2. ...
- java批量解压文件夹下的所有压缩文件(.rar、.zip、.gz、.tar.gz)
// java批量解压文件夹下的所有压缩文件(.rar..zip..gz..tar.gz) 新建工具类: package com.mobile.utils; import com.github.jun ...
- linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体[转]
linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体 1.引用头文件#include<dirent.h> struct ...
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
- 读取同一文件夹下多个txt文件中的特定内容并做统计
读取同一文件夹下多个txt文件中的特定内容并做统计 有网友在问,C#读取同一文件夹下多个txt文件中的特定内容,并把各个文本的数据做统计. 昨晚Insus.NET抽上些少时间,来实现此问题,加强自身的 ...
- 将文件夹下的所有csv文件存入数据库
# 股票的多因子分层回测代码实现 import os import pymysql # import datetime, time # from config import * database_ta ...
- 在存放源程序的文件夹中建立一个子文件夹 myPackage。例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage)。在 myPackage 包中创建一个YMD类,该类具有计算今年的年份、可以输出一个带有年月日的字符串的功能。设计程序SY31.java,给定某人姓名和出生日期,计算该人年龄,并输出该人姓名、年龄、出生日期。程序使用YM
题目补充: 在存放源程序的文件夹中建立一个子文件夹 myPackage.例如,在“D:\java”文件夹之中创建一个与包同名的子文件夹 myPackage(D:\java\myPackage).在 m ...
- 【bat批处理】批量执行某个文件夹下的所有sql文件bat批处理
遍历文件夹下所有的sql文件,然后命令行执行 for /r "D:\yonyou\UBFV60\U9.VOB.Product.Other" %%a in (*.sql) do ( ...
- MapReduce会自动忽略文件夹下的.开头的文件
MapReduce会自动忽略文件夹下的.开头的文件,跳过这些文件的处理.
随机推荐
- Android 与Java 进程退出 killProcess与System.exit
android所有activity都在主进程中,在清单文件Androidmanifest.xml中可以设置启动不同进程,Service需要指定运行在单独进程?主进程中的主线程?还是主进程中的其他线程? ...
- Linux-pthread如何设置线程的优先级
设置线程优先级的函数: int pthread_setschedparam(pthread_t target_thread, int policy, const struct sched_param ...
- Linux16.04 LTS 环境下将cmake的项目转换成eclipse可导入可调试的工程项目
Linux作为一个开源系统,其中的一个优势就是有效的将各种源码编译得到的库集合在一起,为项目的使用创建了便捷.通常情况下,我们在开发自己的开源项目时,喜欢使用cmake调用各种三方库,如opencv ...
- 非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry
非常全面的SQL Server巡检脚本来自sqlskills团队的Glenn Berry Glenn Berry 曾承诺对这个脚本持续更新 -- SQL Server 2012 Diagnostic ...
- C和C++头文件大全
C.传统 C++ #include <assert.h> //设定插入点#include <ctype.h> //字符处理#include <errno.h> ...
- spring4笔记----报错publicid systemid之间要有空格的解决方法
<?xml version="1.0" encoding="GBK"?> <beans xmlns:xsi="http://www. ...
- C#方法重载(overload)方法重写(override)隐藏(new)
一.重载:同一个作用域内发生(比如一个类里面),定义一系列同名方法,但是方法的参数列表不同.这样才能通过传递不同的参数来决定到底调用哪一个. 值得注意的是,方法重载只有通过参数不同来判断调用哪个方法, ...
- Scrapy(爬虫框架)中,Spider类中parse()方法的工作机制
parse(self,response):当请求url返回网页没有指定回调函数,默认的Request对象的回调函数,用来处理网页返回的response,和生成的Item或者Request对象 以下分析 ...
- contenteditable元素的placeholder输入提示语设置
在某些情况下,textarea是不够用的,我们还需要显示一些图标或者高亮元素,这就需要用富文本编辑器,而富文本编辑器本质上是HTML元素设置了contenteditable. 然后可能需要像input ...
- SpringCloud之初识Robbin---负载均衡
在上一篇中讲解Eureka注册中心的案例,我们启动了一个user-service,然后通过DiscoveryClient来获取服务实例信息,然后获取ip和端口来访问. 但是实际环境中,我们往往会开启很 ...