以下是一段我自己在用的 code,用來找指定目錄下的指定副檔名。
你應該可以很容易的依你的需求再做修改
![]()
< class="code">
void TForm1::FindFilesInDirectory(String directory, String extension, bool searchSubdir)
{
WIN32_FIND_DATA filedata ; // Structure for file data
HANDLE filehandle ; // Handle for searching if( extension == "" )
extension = "*.*";
// Pass 1 - Search for the files within the directory.
filehandle = FindFirstFile((directory extension).c_str(), &filedata) ;
if( filehandle != INVALID_HANDLE_VALUE )
{
do
{
if( (filedata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == 0 )
{
// Display the file name.
TListItem *li = ListView1->Items->Add();
li->Caption = directory filedata.cFileName ;
// Display the file extension.
li->SubItems->Add(ExtractFileExt(filedata.cFileName));
Application->ProcessMessages() ;
}
} while(FindNextFile(filehandle, &filedata)) ;
FindClose(filehandle) ;
} if(searchSubdir) // If user wanna search subdirectories..
{
// Pass 2 - Search for all the subdirectories within this directory
filehandle = FindFirstFile ((directory "*.*").c_str (), &filedata) ;
if( filehandle != INVALID_HANDLE_VALUE)
{
do
{
if( (filedata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0 &&
String (filedata.cFileName) != "." && String (filedata.cFileName) != "..")
{
// Recursive call here
FindFilesInDirectory(directory filedata.cFileName "\\", extension, true) ;
}
Application->ProcessMessages() ;
} while(FindNextFile(filehandle, &filedata)) ;
FindClose(filehandle) ;
}
Application->ProcessMessages() ;
}
}
Good luck
![]()
--