資源簡介
1、本程序使用64個線程并發(fā)查詢磁盤文件,可同時搜索多個文件;
2、掃描速度主要依賴于CPU數(shù)量和質(zhì)量,以及需要同時搜索的目標(biāo)文件數(shù)量,在酷睿雙核、640G硬盤的電腦中消耗時間為4秒左右,4核I5、1TB硬盤的電腦中消耗時間為2秒左右(搜索全部本地硬盤,不包括回收站這樣的特殊文件夾);
3、設(shè)計思想的核心是:構(gòu)建一個臨時路徑隊列,每一個線程在枚舉文件夾內(nèi)容的過程中,發(fā)現(xiàn)一個新的文件夾,即向隊列投遞該路徑,64個工作線程則根據(jù)調(diào)度從隊列中提取路徑進行新的搜索;
4、如果需要搜索文件時的相對匹配等功能,可自己進行改動;
4、本程序在WIN7下有時需要以管理員身份運行;

代碼片段和文件信息
#pragma?once
#include?“stdafx.h“
#include?“myDiskDriver.h“
myDiskDriver::myDiskDriver()
{
}
myDiskDriver::~myDiskDriver()
{
}
int?myDiskDriver::GetDiskDrivers(DriversInfo?*Info)
{
if?(NULL?==?Info)
{
return?-1;
}
//獲取磁盤盤標(biāo)字符串
char?szSerial[512]?=?{0};
::GetLogicalDriveStrings(sizeof(szSerial)?/?sizeof(char)?szSerial);
int?Id?=?0;
for(char?*p?=?szSerial;?*p;?p?+=?strlen(szSerial)?+?1)
{
strcpy_s(Info->DiskSerial[Id]?sizeof(Info->DiskSerial[Id])?p);
++?Id;
}
//獲取磁盤類型
for?(int?i?=?0;?i? {
if?(0?==?Info->DiskSerial[i][0])
{
continue;
}
Info->DiskType[i]?=?::GetDriveType(Info->DiskSerial[i]);
}
//獲取磁盤容量
for?(int?i?=?0;?i? {
if?(0?==?Info->DiskSerial[i][0])
{
continue;
}
ULARGE_INTEGER?Tmp?DiskSpace?FreeSpace; //這是結(jié)構(gòu)體
::GetDiskFreeSpaceEx(Info->DiskSerial[i]?&Tmp?&DiskSpace?&FreeSpace);
//http://www.rupeng.com/forum/thread-409-1-1.html
//因為高位那一部分是在33位開始,而G=2^30次方,也就是說G只要30位就可以表示了,如果高位HighPart有數(shù)據(jù),
//那一部分已經(jīng)是G級的了,而且是幾十G。那么低位是32位,多了兩位,這個數(shù)據(jù)在除以1024*1024*1024之后,兩位
//還是原來的數(shù)據(jù),沒有改變,我們?yōu)榱藬?shù)據(jù)的正確,必須把這兩位加到高位的尾部,由于只要兩位,所以我們的高
//位就只要*4,也就是向左移兩位,空出的兩位剛好就可以接受來自低位的G級的G了。
//high?32?31?30?。。。。。。。5?4?3?2?1?high未得第1位是代表100G
//low??32?31?30?。。。。。。。5?4?3?2?1?從low的第31位開始已經(jīng)可以看作是1G了
Info->DiskSpace[i]?=?(float)(DiskSpace.HighPart?*?4?+?(float)(DiskSpace.LowPart)?/?(1024?*?1024?*?1024));
Info->FreeSpace[i]?=?(float)(FreeSpace.HighPart?*?4?+?(float)(FreeSpace.LowPart)?/?(1024?*?1024?*?1024));
}
return?1;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1806??2012-08-06?11:00??mySearch\myDiskDriver.cpp
?????文件????????760??2012-08-03?11:58??mySearch\myDiskDriver.h
?????文件???????5464??2012-08-06?11:00??mySearch\mySearch.cpp
?????文件????????861??2012-08-06?11:00??mySearch\mySearch.h
?????文件???????4086??2012-08-06?11:00??mySearch\mySearchThread.cpp
?????文件???????1718??2012-08-06?11:03??mySearch\mySearchThread.h
?????文件???????2837??2012-07-16?11:26??mySearch\ReadMe.txt
?????文件??????21630??2005-12-08?14:56??mySearch\res\test.ico
?????文件????????360??2012-07-16?11:26??mySearch\res\test.rc2
?????文件????????814??2012-08-03?09:19??mySearch\resource.h
?????文件????????754??2012-07-16?11:39??mySearch\stdafx.cpp
?????文件???????2640??2012-08-04?16:37??mySearch\stdafx.h
?????文件??????57988??2012-08-04?14:54??mySearch\test.aps
?????文件???????1491??2012-08-02?23:07??mySearch\test.cpp
?????文件????????322??2012-08-02?23:07??mySearch\test.h
?????文件???????4641??2012-08-04?14:54??mySearch\test.rc
?????文件???????1022??2012-07-16?11:26??mySearch\test.sln
????..A..H.?????76800??2012-08-06?11:05??mySearch\test.suo
?????文件???????5931??2012-08-04?14:18??mySearch\test.vcproj
?????文件???????6291??2012-08-06?11:05??mySearch\testDlg.cpp
?????文件???????1155??2012-08-04?19:38??mySearch\testDlg.h
?????目錄??????????0??2012-07-16?11:26??mySearch\res
?????目錄??????????0??2012-08-06?11:05??mySearch
-----------?---------??----------?-----??----
???????????????199371????????????????????23
- 上一篇:鳶尾花數(shù)據(jù)集決策樹模型
- 下一篇:mvc 在線考試系統(tǒng)
評論
共有 條評論