如何编程实现在全部硬盘中搜索文件?(急!在线等)
一个思路也可以,谢谢! 问题点数:20、回复次数:3Top
1 楼gloom(苍狗白云)回复于 2003-09-03 10:09:30 得分 20
AnsiString disk="";
int nResult=0;
for (int i='C';i<='Z';i++)
{
disk=(char)i;
disk+=":\\";
nResult=GetDriveType(disk.c_str());
if (nResult!=DRIVE_FIXED) continue;
//在此搜索disk中的文件
//FindFromDisk(disk);
}Top
2 楼gloom(苍狗白云)回复于 2003-09-03 10:16:02 得分 0
//---------------------------------------------------------------------------
//从一个目录搜索文件可以用下面代函数参考一下
unsigned int SearchFile(AnsiString srcDir)
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
AnsiString SrcDir=srcDir+"*.*";
AnsiString fName="";
unsigned int files=0;
BOOL fFinished = FALSE;
hSearch = FindFirstFile((srcDir+"*.*").c_str(), &FileData);
while (!fFinished)
{
fName=FileData.cFileName ;
bool flag=true;
if (fName=="."||fName=="..") flag=false;
int atr=FileData.dwFileAttributes &faDirectory;
//如果是文件夹
if (flag&&atr==faDirectory)
{
AnsiString sDir=srcDir+fName;
ch=*sDir.AnsiLastChar();
if (ch!='\\') sDir+="\\";
files+=SearchFile (srcDir+fName+"\\");
}
//如果是文件
else if (flag)
{
//判断是否是满足你要求的文件,是则操作此文件
files++;
}
//搜索下一个文件
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
fFinished = TRUE;
}
}
}
if (!FindClose(hSearch))
{
ShowMessage("无法关闭文件!");
}
return files;
}
//---------------------------------------------------------------------------Top
3 楼gloom(苍狗白云)回复于 2003-09-03 10:20:23 得分 0
//---------------------------------------------------------------------------
unsigned int TForm1::SearchFile(AnsiString srcDir)
{
WIN32_FIND_DATA FileData;
HANDLE hSearch;
DWORD dwAttrs;
AnsiString SrcDir=srcDir+"*.*";
AnsiString fName="";
unsigned int files=0;
BOOL fFinished = FALSE;
hSearch = FindFirstFile((srcDir+"*.*").c_str(), &FileData);
while (!fFinished)
{
fName=FileData.cFileName ;
bool flag=true;
if (fName=="."||fName=="..") flag=false;
int atr=FileData.dwFileAttributes &faDirectory;
//如果是文件夹
if (flag&&atr==faDirectory)
{
AnsiString sDir=srcDir+fName;
ch=*sDir.AnsiLastChar();
if (ch!='\\') sDir+="\\";
files+=SearchFile (srcDir+fName+"\\");
}
//如果是文件
else if (flag)
{
//判断是否是满足你要求的文件,是则操作此文件
files++;
}
//搜索下一个文件
if (!FindNextFile(hSearch, &FileData))
{
if (GetLastError() == ERROR_NO_MORE_FILES)
{
fFinished = TRUE;
}
}
}
if (!FindClose(hSearch))
{
ShowMessage("无法关闭文件!");
}
return files;
}
//---------------------------------------------------------------------------Top
4 楼constantine(飘遥的安吉儿)回复于 2003-09-16 21:27:11 得分 0
学习!Top



