使用递归计算各个文件夹大小
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;using System.Web;namespace WenJJ{ public partial class FMain : Form { public FMain() { InitializeComponent(); } public void DPrint(String Name, long Size, int Step ) { if (Step > mStepCtrl) { return; } String iO = "\r\n"; for (int i = 0; i < Step; i++) { iO += "\t"; } iO += Name; iO += ":"; iO += Size.ToString(); IOutPut.Text += iO; Console.WriteLine(iO); } public long GetDir(String iDirName, int Step) { long tsize = 0; string[] dirnames = Directory.GetDirectories(iDirName); foreach (string dname in dirnames) { tsize += GetDir(dname, Step+1); //IOutPut.Text += "\r\n"; } //获取该文件夹下面的所有文件名 string[] filenames = Directory.GetFiles(iDirName); foreach (string fname in filenames) { FileInfo fi = new FileInfo(fname); tsize += fi.Length; DPrint(fname, fi.Length, Step + 1); } DPrint(iDirName, tsize, Step); return tsize; } int mStepCtrl = 2; private void GetNow_Click(object sender, EventArgs e) { long tl = GetDir("c:/Users/Administrator/", 0); return; } }}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Web;
namespace WenJJ
{
public partial class FMain : Form
{
public FMain()
{
InitializeComponent();
}
public void DPrint(String Name, long Size, int Step )
{
if (Step > mStepCtrl)
{
return;
}
String iO = "\r\n";
for (int i = 0; i < Step; i++)
{
iO += "\t";
}
iO += Name;
iO += ":";
iO += Size.ToString();
IOutPut.Text += iO;
Console.WriteLine(iO);
}
public long GetDir(String iDirName, int Step)
{
long tsize = 0;
string[] dirnames = Directory.GetDirectories(iDirName);
foreach (string dname in dirnames)
{
tsize += GetDir(dname, Step+1);
//IOutPut.Text += "\r\n";
}
//获取该文件夹下面的所有文件名
string[] filenames = Directory.GetFiles(iDirName);
foreach (string fname in filenames)
{
FileInfo fi = new FileInfo(fname);
tsize += fi.Length;
DPrint(fname, fi.Length, Step + 1);
}
DPrint(iDirName, tsize, Step);
return tsize;
}
int mStepCtrl = 2;
private void GetNow_Click(object sender, EventArgs e)
{
long tl = GetDir("c:/Users/Administrator/", 0);
return;
}
}
}