资源简介
1、本程序使用64个线程并发查询磁盘文件,可同时搜索多个文件;
2、扫描速度主要依赖于CPU数量和质量,以及需要同时搜索的目标文件数量,在酷睿双核、640G硬盘的电脑中消耗时间为4秒左右,4核I5、1TB硬盘的电脑中消耗时间为2秒左右(搜索全部本地硬盘,不包括回收站这样的特殊文件夹);
3、设计思想的核心是:构建一个临时路径队列,每一个线程在枚举文件夹内容的过程中,发现一个新的文件夹,即向队列投递该路径,64个工作线程则根据调度从队列中提取路径进行新的搜索;
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;
}
//获取磁盘盘标字符串
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 < MAX_DRIVERS; ++ i)
{
if (0 == Info->DiskSerial[i][0])
{
continue;
}
Info->DiskType[i] = ::GetDriveType(Info->DiskSerial[i]);
}
//获取磁盘容量
for (int i = 0; i < MAX_DRIVERS; ++ i)
{
if (0 == Info->DiskSerial[i][0])
{
continue;
}
ULARGE_INTEGER Tmp DiskSpace FreeSpace; //这是结构体
::GetDiskFreeSpaceEx(Info->DiskSerial[i] &Tmp &DiskSpace &FreeSpace);
//http://www.rupeng.com/forum/thread-409-1-1.html
//因为高位那一部分是在33位开始,而G=2^30次方,也就是说G只要30位就可以表示了,如果高位HighPart有数据,
//那一部分已经是G级的了,而且是几十G。那么低位是32位,多了两位,这个数据在除以1024*1024*1024之后,两位
//还是原来的数据,没有改变,我们为了数据的正确,必须把这两位加到高位的尾部,由于只要两位,所以我们的高
//位就只要*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位开始已经可以看作是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
- 上一篇:鸢尾花数据集决策树模型
- 下一篇:mvc 在线考试系统
评论
共有 条评论