查看單個文章
舊 2006-09-20, 07:29 PM   #3 (permalink)
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

在ASP.NET中獲取資料夾的大小
載至:MVPCN Blog 原作者:陝北吳旗娃

以CSDN上見到一個網友問怎麼獲取某個資料夾及子資料夾中所有文件的大小,在net框架1.0和1.1版的類庫中都沒有提供類似的方法或內容,所以只能自己來計算,下面是我寫的一個方法,通過遞歸獲取給定資料夾及其子資料夾中所有文件的大小,通過該方法取得的資料夾大小經過測試是正確的(與Windows視窗檔案總管中資料夾內容上顯示的大小值一樣),不過有一點不明白,資料夾內容上顯示的「佔用空間」值是怎麼計算的?下面是我的方法:

public long GetDirectoryLength(string dirPath){
if(!Directory.Exists(dirPath))
return 0;
long len=0;
DirectoryInfo di=new DirectoryInfo(dirPath);
foreach(FileInfo fi in di.GetFiles()){
len+=fi.Length;
}
DirectoryInfo[] dis=di.GetDirectories();
if(dis.Length>0){
for(int i=0;i<dis.Length;i++){
len+=GetDirectoryLength(dis[i].FullName);
}
}
return len;
}

完整的測試頁代碼:

<%@Page Language="C#" debug=true%>
<%@Import Namespace="System.IO"%>
<%@Register TagPrefix="www" Namespace="Wuqi.Webdiyer" Assembly="AspNetDatePicker"%>
<script runat="server">
void Page_Load(object src,EventArgs e){
if(!Page.IsPostBack){
Response.Write(GetDirectoryLength(@"C:\inetpub\wwwroot\webdiyer"));
}
}

long GetDirectoryLength(string dirPath){
if(!Directory.Exists(dirPath))
return 0;
long len=0;
DirectoryInfo di=new DirectoryInfo(dirPath);
foreach(FileInfo fi in di.GetFiles()){
len+=fi.Length;
}
DirectoryInfo[] dis=di.GetDirectories();
if(dis.Length>0){
for(int i=0;i<dis.Length;i++){
len+=GetDirectoryLength(dis[i].FullName);
}
}
return len;
}

</script>
<HTML>
<HEAD>
<TITLE> Webdiyer製造:) </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="Webdiyer">
</HEAD>
<BODY>
<form runat="server">
</form>
</BODY>
</HTML>
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
向 psac 送花的會員:
longlie (2007-10-21)
感謝您發表一篇好文章