统计电脑所有文件
没事无聊写着玩的,也就是熟练运用API而已,没什么技术可言...[cpp]
#include <windows.h>
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
using namespace std;
static int count=0; //记录文件个数
void FindInAll(string & Path,fstream & outfile)
{
string szFind;
szFind=Path;
szFind+="*.*";
WIN32_FIND_DATA FindFileData;//WIN32_FIND_DATA结构包含文件的全部信息
HANDLE hFind=FindFirstFile(szFind.c_str(),& FindFileData);//FindFirstFile根据文件名查找文件
if(hFind==INVALID_HANDLE_VALUE)
return;
do
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果找到的是目录,则进入此目录进行递归
{
string szFile;
//去掉目录中的.和..目录
szFile=Path+FindFileData.cFileName+"\\";
string test=szFile.substr(szFile.length()-3,szFile.length());
if(test=="\\.\\"||test=="..\\")
continue;
FindInAll( szFile, outfile);
}
else //找到的是文件
{
string szFile;
szFile=Path+FindFileData.cFileName;
outfile<<szFile<<endl;
::count=::count+1;
}
}
while(FindNextFile(hFind,& FindFileData));
FindClose(hFind);
}
int main()
{
//用来记录程序运行所花时间
clock_t start,finish;
double totaltime;
start=clock();//计时开始
cout<<"***********************************************************"<<endl;
cout<<"---------------Created By Cryking 2012.11.02---------------"<<endl;
cout<<"本程序自动遍历电脑所有文件(包括隐藏文件),时间较长,请耐心等待..."<<endl;
cout<<"***********************************************************"<<endl;
fstream outfile("allfile.txt",ios::out);
cout<<"----------------遍历磁盘所有文件开始:-----------------------"<<endl;
outfile<<setw(3)<<"------遍历磁盘所有文件开始:-----------"<<endl;
//遍历整个电脑的磁盘
int DSLength = GetLogicalDriveStrings(0,NULL);//得到驱动器总长度
char * Path=new char[DSLength];
GetLogicalDriveStrings(DSLength,Path);//得到第一个驱动器地址信息
while(Path!=NULL)
{
//直接遍历D盘所有文件
if((string)Path=="") //路径出错
break;//跳出循环
cout<<"正在遍历"<<Path<<"盘文件,请等待..."<<endl;
FindInAll((string)Path,outfile);
Path=Path+strlen(Path)+1;//根据当前驱动器地址获得下一个驱动器地址
}
locale::global(locale("C"));
finish=clock();//计时结束
totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
outfile<<setw(3)<<"------遍历磁盘所有文件结束-----------"<<endl;
outfile<<setw(3)<<"本次遍历所花时间:"<<totaltime<<"秒"<<endl;
outfile<<setw(3)<<"本电脑共有文件数:"<<::count<<endl;
outfile<<setw(3)<<"------------遍历完成---------------"<<endl;
outfile.close();
cout<<"遍历完成,请查看该目录下的allfile.txt文件!"<<endl;
system("pause");
return 0;
}
程序运行的时间没我想象的那么慢,用了递归,而且所有文件路径信息全写到文件了(嘿嘿,貌似可以用来干些坏事··),运行完后文件大概有30M,如果用记事本打开的话有点慢,建议用UE打开,看看我的结果
补充:软件开发 , C++ ,