static void main(string[] args) { string dir = @"c:\"; string[] dirs=directory.getdirectories(dir); long totalsize = 0; if(dirs!=null && dirs.any()) { foreach(string dr in dirs) { var size = new directoryinfo(dr).getdirectorysize(); totalsize += size; console.writeline($"dir:{dr},size:{size}"); } } console.writeline($"totalsize:{totalsize}"); system.diagnostics.debug.writeline($"totalsize:{totalsize}"); } static class dirhelper { public static long getdirectorysize(this system.io.directoryinfo directoryinfo, bool recursive = true) { var startdirectorysize = default(long); try { if (directoryinfo == null || !directoryinfo.exists) return startdirectorysize; //return 0 while directory does not exist. //add size of files in the current directory to main size. foreach (var fileinfo in directoryinfo.getfiles()) system.threading.interlocked.add(ref startdirectorysize, fileinfo.length); if (recursive) //loop on sub direcotries in the current directory and calculate it's files size. system.threading.tasks.parallel.foreach(directoryinfo.getdirectories(), (subdirectory) => system.threading.interlocked.add(ref startdirectorysize, getdirectorysize(subdirectory, recursive))); //return full size of this directory. } catch { } return startdirectorysize; } }
static void diskdemo() { string dir = @"c:\windows\"; string[] dirs = directory.getdirectories(dir); long totalsize = 0; stringbuilder builder = new stringbuilder(); list<dir> dirlist = new list<dir>(); if (dirs != null && dirs.any()) { foreach (string dr in dirs) { var size = new directoryinfo(dr).getdirectorysize(); dir d = new dir(); d.dirname = dr; d.dirsize = size; dirlist.add(d); totalsize += size; } } foreach (var dd in dirlist.orderbydescending(x => x.dirsize)) { system.diagnostics.debug.writeline(dd); console.writeline(dd); } system.diagnostics.debug.writeline($"totalsize:{totalsize}"); } class dir { public string dirname { get; set; } public long dirsize { get; set; } public override string tostring() { return $"dirname:{dirname},dirsize:{dirsize}"; } }
如对本文有疑问, 点击进行留言回复!!
使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)
C#实现获取本地内网(局域网)和外网(公网)IP地址的方法分析
网友评论