如何獲得整隻目錄的總容量 |
答題得分者是:RaynorPao
|
HomeSound
中階會員 發表:44 回覆:178 積分:94 註冊:2002-08-31 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請教各位大大: 如目錄為 C:\Win 想獲得此目錄下所有檔案的容量 (包含Win下所有的子目錄), 小弟只知道用WIN32_FIND_DATA結構 FindFirstFile , FindNextFile 可是回圈繞一繞值都不太正確,求助各位先進們.你說的「不正確」 是指什麼「不正確」?? 檔案的實際 size 和檔案需要的儲存空間 是不同的喔~~
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
HomeSound
中階會員 發表:44 回覆:178 積分:94 註冊:2002-08-31 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 檔案總管指著該目錄,按滑鼠右鍵的內容,有個該目錄的總容量 目錄少層的話都正確(總容量位元組),太多層就少了一些位元組 我的變數設到9層,我知道掃描目錄回圈一定有誤! 我是用 F=F f.nFileSizeLow; 去累加的,出來應是位元組 請教有寫過類似的大大指導一下,感謝喲!我做了一個小小的實驗(希望對你有幫助) 建立一個目錄 C:\Temp 在這個目錄下放了幾十個檔案 副檔名都是 .txt 然後寫了以下程式碼 最後算出來的 size 是正確的 #include "windows.h" #include "stdio.h" void main(void) { HRESULT hr=S_FALSE; const char* szPath="c:\\temp\\*.txt"; WIN32_FIND_DATA wfd; HANDLE hFile=INVALID_HANDLE_VALUE; DWORD dwTotal=0; ZeroMemory(&wfd, sizeof(WIN32_FIND_DATA)); hFile=FindFirstFile(szPath, &wfd); if(hFile==INVALID_HANDLE_VALUE) { hr=GetLastError(); printf("\nFindFirstFile failed, error code=lX", hr); } else { dwTotal =wfd.nFileSizeLow; printf("\nFindFirstFile, cFileName=%s", wfd.cFileName); printf("\nFindFirstFile, nFileSizeLow=%d", wfd.nFileSizeLow); } while(hFile!=INVALID_HANDLE_VALUE && FindNextFile(hFile, &wfd)) { dwTotal =wfd.nFileSizeLow; printf("\nFindNextFile, cFileName=%s", wfd.cFileName); printf("\nFindNextFile, nFileSizeLow=%d", wfd.nFileSizeLow); } printf("\ndwTotal=%ld", dwTotal); FindClose(hFile); } // end of main
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
HomeSound
中階會員 發表:44 回覆:178 積分:94 註冊:2002-08-31 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 太感謝RaynorPao大大的分享 const char*szPath="c:\\temp\\*.*"; 不過此範例只有累加該層目錄的容量 底下的目錄並沒有累加 temp--* | a-*-b--* | | *---C--*-d--*---* | | | | e f g h ........ 像這樣或更多層目錄全部檔案容量 一層的累加是小回圈,再累加下層的就需要 多幾個回圈,暈頭轉向了 >>< face="Verdana, Arial, Helvetica"> 你可以嘗試用「迴圈」 或「遞迴」寫寫看 只需要把程式碼改一改就可以 達到你要的目的了
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
HomeSound
中階會員 發表:44 回覆:178 積分:94 註冊:2002-08-31 發送簡訊給我 |
|
HomeSound
中階會員 發表:44 回覆:178 積分:94 註冊:2002-08-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |