C# 怎么取得指定文件夹下文件个数 和 所有文件大小

一鸣惊人 2012-01-05 02:40:47
C# 新手, 谢谢大牛们 ,
讲细点
...全文
711 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfvgodot 2012-01-05
  • 打赏
  • 举报
回复
- -# 楼上的几个回答此类月经贴都已经量产化了……
libolei 2012-01-05
  • 打赏
  • 举报
回复
递归啊

private void btnFolderSize_Click(object sender, EventArgs e)
{
m_listShowInfo = new List<string>();
m_fileCount = 0;

RecurrenceFolderSize(@"K:\");

m_listShowInfo.Sort();

this.lbNoUseImg.DataSource = m_listShowInfo;
}

List<string> m_listShowInfo = new List<string>();
private long RecurrenceFolderSize(string Ppath)
{
DirectoryInfo getFolder = new DirectoryInfo(Ppath);
FileInfo[] getFileInfos = getFolder.GetFiles();
long folderSize = 0;
int fileCount = getFileInfos.Length;
for (int i = 0; i < fileCount; i++)
{
FileInfo nowFileInfo = getFileInfos[i];
folderSize += nowFileInfo.Length;
m_fileCount++;

this.lblShow.Text = m_fileCount + " " + nowFileInfo.FullName;
Application.DoEvents();
}

DirectoryInfo[] getFolders = getFolder.GetDirectories();
int childFolderCount = getFolders.Length;
for (int i = 0; i < childFolderCount; i++)
{
DirectoryInfo nowFolder = getFolders[i];
string nowFolderName = nowFolder.FullName;
folderSize += RecurrenceFolderSize(nowFolderName);
}

m_listShowInfo.Add(string.Format("{0} 文件夹大小:{1},文件个数:{2},文件夹个数:{3}.", Ppath, folderSize, fileCount, childFolderCount));
return folderSize;
}
crackdung 2012-01-05
  • 打赏
  • 举报
回复
文件類控件
http://www.ssware.com/megapack.htm
熙风 2012-01-05
  • 打赏
  • 举报
回复
public static float length = 0;//文件总大小
public int dirNum = 0; //文件目录个数
public int fileNum = 0; //文件个数
//绑定文件大小
public void binder()
{
string fileName = Server.MapPath("Dir/" + Session["UserName"].ToString());
length = Convert.ToSingle(GetDirectoryLength(fileName));
string size = "0";
if (length < 1024)
{
size = string.Format("{0:N0}", length) + "B";
}
else if (length > 1024)
{
if (length < 1048576)
{
size = string.Format("{0:N1}", length / 1024) + "KB";
}
else
{
size = string.Format("{0:N2}", length / 1048576) + "MB";
}
}
Response.Write(size);
}

//获取文件夹大小总和
public 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;
}
fileNum += di.GetFiles().Length;

//获取di中所有的文件夹,并存到一个新的对象数组中,以进行递归
DirectoryInfo[] dis = di.GetDirectories();

dirNum += dis.Length;

if (dis.Length > 0)
{

for (int i = 0; i < dis.Length; i++)
{
len += GetDirectoryLength(dis[i].FullName);
}
}
return len;

}


stonespace 2012-01-05
  • 打赏
  • 举报
回复
用DirectoryInfo.GetFiles可以获得所有文件,大小可以用FileInfo.Legth获得,

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧