• 大小: 59KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-07-28
  • 语言: 其他
  • 标签: 文件搜索  

资源简介

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


评论

共有 条评论