CFileFind
类
执行本地文件搜索,并且是执行 Internet 文件搜索的 CGopherFileFind
和 CFtpFileFind
的基类。
语法
class CFileFind : public CObject
成员
公共构造函数
名称 | 描述 |
---|---|
CFileFind::CFileFind |
构造 CFileFind 对象。 |
公共方法
名称 | 描述 |
---|---|
CFileFind::Close |
关闭搜索请求。 |
CFileFind::FindFile |
搜索目录以获取指定文件名。 |
CFileFind::FindNextFile |
从上一次对 FindFile 的调用继续文件搜索。 |
CFileFind::GetCreationTime |
获取文件的创建时间。 |
CFileFind::GetFileName |
获取所找到文件的名称(包括扩展名) |
CFileFind::GetFilePath |
获取所找到文件的完整路径。 |
CFileFind::GetFileTitle |
获取所找到文件的标题。 标题不包括扩展名。 |
CFileFind::GetFileURL |
获取所找到文件的 URL,包括文件路径。 |
CFileFind::GetLastAccessTime |
获取上次访问文件的时间。 |
CFileFind::GetLastWriteTime |
获取上次更改并保存文件的时间。 |
CFileFind::GetLength |
获取所找到文件的长度(以字节为单位)。 |
CFileFind::GetRoot |
获取所找到文件的根目录。 |
CFileFind::IsArchived |
确定所找到文件是否已存档。 |
CFileFind::IsCompressed |
确定所找到文件是否已压缩。 |
CFileFind::IsDirectory |
确定所找到文件是否为目录。 |
CFileFind::IsDots |
确定所找到文件的名称是否具有名称“.”或“..”,指示该名称实际上是一个目录。 |
CFileFind::IsHidden |
确定所找到文件是否已隐藏。 |
CFileFind::IsNormal |
确定所找到文件是否正常(换言之,没有其他属性)。 |
CFileFind::IsReadOnly |
确定所找到文件是否为只读文件。 |
CFileFind::IsSystem |
确定所找到文件是否为系统文件。 |
CFileFind::IsTemporary |
确定所找到文件是否为临时文件。 |
CFileFind::MatchesMask |
指示要找到的文件的所需文件属性。 |
受保护方法
名称 | 描述 |
---|---|
CFileFind::CloseContext |
关闭当前搜索句柄指定的文件。 |
受保护的数据成员
名称 | 描述 |
---|---|
CFileFind::m_pTM |
指向 CAtlTransactionManager 对象的指针。 |
备注
CFileFind
包括开始搜索,查找文件并返回文件标题、名称或路径的成员函数。 对于 Internet 搜索,成员函数 GetFileURL
可返回文件的 URL。
CFileFind
是另外两个 MFC 类的基类,旨在搜索特定服务器类型:CGopherFileFind
专门与 gopher 服务器配合工作,而 CFtpFileFind
专门与 FTP 服务器配合使用。 这三个类共同为客户端提供了一种无缝机制,用于在本地计算机或远程服务器上查找文件,而无需考虑服务器协议、文件类型或位置。
以下代码将枚举当前目录中的所有文件,并打印每个文件的名称:
CFileFind finder;
BOOL bWorking = finder.FindFile(_T("*.*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
}
为简单起见,此代码使用 C++ 标准库 cout
类。 该 cout
行可以替换为对 CListBox::AddString
的调用,例如,在具有图形用户界面的程序中。
有关如何使用 CFileFind
和其他 WinInet 类的详细信息,请参阅使用 WinInet 进行 Internet 编程一文。
继承层次结构
CFileFind
要求
标头:afx.h
CFileFind::CFileFind
构造 CFileFind
对象时会调用此成员函数。
CFileFind();
CFileFind(CAtlTransactionManager* pTM);
参数
pTM
指向 CAtlTransactionManager 对象的指针
示例
请参阅 CFileFind::GetFileName
的示例。
CFileFind::Close
调用此成员函数以结束搜索、重置上下文并释放所有资源。
void Close();
注解
调用 Close
后,不必在调用 FindFile
开始新搜索之前创建新的 CFileFind
实例。
示例
请参阅 CFileFind::GetFileName
的示例。
CFileFind::CloseContext
关闭当前搜索句柄指定的文件。
virtual void CloseContext();
注解
关闭搜索句柄的当前值指定的文件。 替代此函数以更改默认行为。
必须至少调用一次 FindFile
或 FindNextFile
函数才能检索有效的搜索句柄。 FindFile
和 FindNextFile
函数使用搜索句柄查找名称与给定名称匹配的文件。
CFileFind::FindFile
调用此成员函数以打开文件搜索。
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwUnused = 0);
参数
pstrName
一个指针,指向包含要查找文件的名称的字符串。 如果为 pstrName
传递 NULL
,则 FindFile
将执行通配符 (*.*) 搜索。
dwUnused
预留用于使用派生类实现 FindFile
多态。 必须为 0。
返回值
如果成功,则不为 0;否则为 0。 若要获得扩展的错误信息,请调用 Win32 函数 GetLastError
。
备注
调用 FindFile
开始文件搜索后,调用 FindNextFile
以检索后续文件。 在调用以下任何属性成员函数前,必须至少调用一次 FindNextFile
:
示例
请参阅 CFileFind::IsDirectory
的示例。
CFileFind::FindNextFile
调用此成员函数以继续从上一次对 FindFile
的调用继续文件搜索。
virtual BOOL FindNextFile();
返回值
如果有更多文件,则为非零值;如果找到的文件是目录中的最后一个文件或发生错误,则为零。 若要获得扩展的错误信息,请调用 Win32 函数 GetLastError
。 如果找到的文件是目录中的最后一个文件,或者找不到匹配的文件,GetLastError
函数便返回 ERROR_NO_MORE_FILES
。
备注
在调用以下任何属性成员函数前,必须至少调用一次 FindNextFile
:
FindNextFile
包装 Win32 FindNextFile
函数。
示例
请参阅 CFileFind::IsDirectory
的示例。
CFileFind::GetCreationTime
调用此成员函数以获取创建指定文件的时间。
virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const;
virtual BOOL GetCreationTime(CTime& refTime) const;
参数
pTimeStamp
指向包含文件创建时间的 FILETIME
结构的指针。
refTime
对 CTime
对象的引用。
返回值
如果成功,则为非零;如果失败,则为 0。 仅当从未在此 CFileFind
对象上调用过 FindNextFile
时,GetCreationTime
才会返回 0。
备注
在调用 GetCreationTime
前,必须至少调用一次 FindNextFile
。
注意
并非所有文件系统都使用相同的语义来实现此函数返回的时间戳。 如果基础文件系统或服务器不支持保留时间属性,此函数可能会返回其他时间戳函数返回的同一个值。 有关时间格式的信息,请参阅 WIN32_FIND_DATA
结构。 在某些操作系统上,返回的时间是文件所在计算机的当地时区。 有关详细信息,请参阅 Win32 FileTimeToLocalFileTime
API。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::GetFileName
调用此成员函数以获取所找到文件的名称。
virtual CString GetFileName() const;
返回值
最近所找到文件的名称。
备注
在调用 GetFileName 前,必须至少调用一次 FindNextFile
。
GetFileName
是返回某种形式的文件名的三种 CFileFind
成员函数之一。 以下列表说明了这三种函数及其不同之处:
GetFileName
返回文件名,包括扩展名。 例如,调用GetFileName
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件名myfile.txt
。GetFilePath
返回文件的整个路径。 例如,调用GetFilePath
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件路径c:\myhtml\myfile.txt
。GetFileTitle
返回文件名,不包括文件扩展名。 例如,调用GetFileTitle
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件标题myfile
。
示例
CFileFind finder;
static const TCHAR szFileToFind[] = _T("C:\\WINDOWS\\SYSTEM.INI");
BOOL bResult = finder.FindFile(szFileToFind);
if (bResult)
{
finder.FindNextFile();
TRACE(_T("Root of %s is %s\n"), szFileToFind,
(LPCTSTR)finder.GetRoot());
TRACE(_T("Title of %s is %s\n"), szFileToFind,
(LPCTSTR)finder.GetFileTitle());
TRACE(_T("Path of %s is %s\n"), szFileToFind,
(LPCTSTR)finder.GetFilePath());
TRACE(_T("URL of %s is %s\n"), szFileToFind,
(LPCTSTR)finder.GetFileURL());
TRACE(_T("Name of %s is %s\n"), szFileToFind,
(LPCTSTR)finder.GetFileName());
finder.Close();
}
else
{
TRACE(_T("You have no %s file.\n"), szFileToFind);
}
CFileFind::GetFilePath
调用此成员函数以获取指定文件的完整路径。
virtual CString GetFilePath() const;
返回值
指定文件的路径。
备注
在调用 GetFilePath
前,必须至少调用一次 FindNextFile
。
GetFilePath
是返回某种形式的文件名的三种 CFileFind
成员函数之一。 以下列表说明了这三种函数及其不同之处:
GetFileName
返回文件名,包括扩展名。 例如,调用GetFileName
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件名myfile.txt
。GetFilePath
返回文件的整个路径。 例如,调用GetFilePath
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件路径c:\myhtml\myfile.txt
。GetFileTitle 返回文件名,不包括文件扩展名。 例如,调用
GetFileTitle
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件标题myfile
。
示例
请参阅 CFileFind::GetFileName
的示例。
CFileFind::GetFileTitle
调用此成员函数以获取所找到文件的标题。
virtual CString GetFileTitle() const;
返回值
文件的标题。
注解
在调用 GetFileTitle
前,必须至少调用一次 FindNextFile
。
GetFileTitle
是返回某种形式的文件名的三种 CFileFind
成员函数之一。 以下列表说明了这三种函数及其不同之处:
GetFileName
返回文件名,包括扩展名。 例如,调用GetFileName
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件名myfile.txt
。GetFilePath
返回文件的整个路径。 例如,调用GetFilePath
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件路径 c:\myhtml\myfile.txt。GetFileTitle
返回文件名,不包括文件扩展名。 例如,调用GetFileTitle
以生成有关文件c:\myhtml\myfile.txt
的用户消息会返回文件标题myfile
。
示例
请参阅 CFileFind::GetFileName
的示例。
CFileFind::GetFileURL
调用此成员函数以检索指定 URL。
virtual CString GetFileURL() const;
返回值
完整 URL。
备注
在调用 GetFileURL
前,必须至少调用一次 FindNextFile
。
GetFileURL
与成员函数 GetFilePath
类似,不同之处在于它以 file://path
的形式返回 URL。 例如,调用 GetFileURL
以获取 myfile.txt
的完整 URL 会返回 URL file://c:\myhtml\myfile.txt
。
示例
请参阅 CFileFind::GetFileName
的示例。
CFileFind::GetLastAccessTime
调用此成员函数以获取指定文件最后访问的时间。
virtual BOOL GetLastAccessTime(CTime& refTime) const;
virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;
参数
refTime
对 CTime
对象的引用。
pTimeStamp
指向包含文件最后访问时间的 FILETIME
结构的指针。
返回值
如果成功,则为非零;如果失败,则为 0。 仅当从未在此 CFileFind
对象上调用过 FindNextFile
时,GetLastAccessTime
才会返回 0。
备注
在调用 GetLastAccessTime
前,必须至少调用一次 FindNextFile
。
注意
并非所有文件系统都使用相同的语义来实现此函数返回的时间戳。 如果基础文件系统或服务器不支持保留时间属性,此函数可能会返回其他时间戳函数返回的同一个值。 有关时间格式的信息,请参阅 WIN32_FIND_DATA
结构。 在某些操作系统上,返回的时间是文件所在计算机的当地时区。 有关详细信息,请参阅 Win32 FileTimeToLocalFileTime
API。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::GetLastWriteTime
调用此成员函数以获取上次更改文件的时间。
virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;
virtual BOOL GetLastWriteTime(CTime& refTime) const;
参数
pTimeStamp
指向包含文件最后写入时间的 FILETIME
结构的指针。
refTime
对 CTime
对象的引用。
返回值
如果成功,则为非零;如果失败,则为 0。 仅当从未在此 CFileFind
对象上调用过 FindNextFile
时,GetLastWriteTime
才会返回 0。
备注
在调用 GetLastWriteTime
前,必须至少调用一次 FindNextFile
。
注意
并非所有文件系统都使用相同的语义来实现此函数返回的时间戳。 如果基础文件系统或服务器不支持保留时间属性,此函数可能会返回其他时间戳函数返回的同一个值。 有关时间格式的信息,请参阅 WIN32_FIND_DATA
结构。 在某些操作系统上,返回的时间是文件所在计算机的当地时区。 有关详细信息,请参阅 Win32 FileTimeToLocalFileTime
API。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::GetLength
调用此成员函数以获取所找到文件的长度(以字节为单位)。
ULONGLONG GetLength() const;
返回值
所找到文件的长度(以字节为单位)。
注解
在调用 GetLength
前,必须至少调用一次 FindNextFile
。
GetLength
使用 Win32 结构 WIN32_FIND_DATA
获取并返回文件大小的值(以字节为单位)。
注意
从 MFC 7.0 起,GetLength
支持 64 位整数类型。 使用这一较新版本的库生成的先前现有代码可能会导致截断警告。
示例
// This code fragment prints out a very verbose directory
// listing for all the files in the root directory on the
// C: drive. After the file's name, each attribute of the
// file is printed, as are the creation, last access, and
// last write times.
CFileFind finder;
BOOL bWorking = finder.FindFile(_T("C:\\*.*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
_tprintf_s(_T("%s\n\t"), (LPCTSTR)finder.GetFileName());
_tprintf_s(_T("%c"), finder.IsArchived() ? 'A' : 'a');
_tprintf_s(_T("%c"), finder.IsCompressed() ? 'C' : 'c');
_tprintf_s(_T("%c"), finder.IsHidden() ? 'H' : 'h');
_tprintf_s(_T("%c"), finder.IsNormal() ? 'N' : 'n');
_tprintf_s(_T("%c"), finder.IsReadOnly() ? 'R' : 'r');
_tprintf_s(_T("%c"), finder.IsSystem() ? 'S' : 's');
_tprintf_s(_T("%c"), finder.IsTemporary() ? 'T' : 't');
_tprintf_s(_T("\t%I64u byte(s)\n"), finder.GetLength());
CTime tempTime;
CString str;
_tprintf_s(_T("\tCreated : "));
if (finder.GetCreationTime(tempTime))
{
str = tempTime.Format(_T("%c"));
_tprintf_s(_T("%s\n"), (LPCTSTR) str);
}
else
{
_tprintf_s(_T("(unavailable)\n"));
}
_tprintf_s(_T("\tLast Access: "));
if (finder.GetLastAccessTime(tempTime))
{
str = tempTime.Format(_T("%c"));
_tprintf_s(_T("%s\n"), (LPCTSTR) str);
}
else
{
_tprintf_s(_T("(unavailable)\n"));
}
_tprintf_s(_T("\tLast Write : "));
if (finder.GetLastWriteTime(tempTime))
{
str = tempTime.Format(_T("%c"));
_tprintf_s(_T("%s\n"), (LPCTSTR) str);
}
else
{
_tprintf_s(_T("(unavailable)\n"));
}
_tprintf_s(_T("\n"));
}
CFileFind::GetRoot
调用此成员函数以获取所找到文件的根。
virtual CString GetRoot() const;
返回值
活动搜索的根。
备注
在调用 GetRoot
前,必须至少调用一次 FindNextFile
。
此成员函数返回用于启动搜索的驱动器说明符和路径名称。 例如,使用 *.dat
调用 FindFile
会导致 GetRoot
返回空字符串。 将路径(例如 c:\windows\system\*.dll
)传递给 FindFile
会导致 GetRoot
返回 c:\windows\system\
。
示例
请参阅 CFileFind::GetFileName
的示例。
CFileFind::IsArchived
调用此成员函数以确定所找到文件是否已存档。
BOOL IsArchived() const;
返回值
如果成功,则不为 0;否则为 0。
备注
应用程序使用 FILE_ATTRIBUTE_ARCHIVE
(WIN32_FIND_DATA
结构中标识的文件属性)标记要备份或删除的存档文件。
在调用 IsArchived
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::IsCompressed
调用此成员函数以确定所找到文件是否已压缩。
BOOL IsCompressed() const;
返回值
如果成功,则不为 0;否则为 0。
注解
压缩文件使用 FILE_ATTRIBUTE_COMPRESSED
(WIN32_FIND_DATA
结构中标识的文件属性)进行标记。 对于文件,此属性指示文件中的所有数据都会压缩。 对于目录,此属性指示压缩是新创建文件和子目录的默认设置。
在调用 IsCompressed
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::IsDirectory
调用此成员函数以确定所找到文件是否为目录。
BOOL IsDirectory() const;
返回值
如果成功,则不为 0;否则为 0。
备注
作为目录的文件使用 FILE_ATTRIBUTE_DIRECTORY
(WIN32_FIND_DATA
结构中标识的文件属性)进行标记。
在调用 IsDirectory
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
这个小程序递归 C:\ 驱动器上的每个目录并打印目录名称。
void Recurse(LPCTSTR pstr)
{
CFileFind finder;
// build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("\\*.*");
// start working for files
BOOL bWorking = finder.FindFile(strWildcard);
while (bWorking)
{
bWorking = finder.FindNextFile();
// skip . and .. files; otherwise, we'd
// recur infinitely!
if (finder.IsDots())
continue;
// if it's a directory, recursively search it
if (finder.IsDirectory())
{
CString str = finder.GetFilePath();
TRACE(_T("%s\n"), (LPCTSTR)str);
Recurse(str);
}
}
finder.Close();
}
void PrintDirs()
{
Recurse(_T("C:"));
}
CFileFind::IsDots
调用此成员函数以在循环访问文件时测试当前目录和父目录标记。
virtual BOOL IsDots() const;
返回值
如果所找到文件的名称为“.”或“..”,则为非零,表示所找到文件实际上是目录。 否则为 0。
注解
在调用 IsDots
前,必须至少调用一次 FindNextFile
。
示例
请参阅 CFileFind::IsDirectory
的示例。
CFileFind::IsHidden
调用此成员函数以确定所找到文件是否已隐藏。
BOOL IsHidden() const;
返回值
如果成功,则不为 0;否则为 0。
注解
隐藏文件使用 FILE_ATTRIBUTE_HIDDEN
(WIN32_FIND_DATA
结构中标识的文件属性)进行标记。 隐藏文件没有包括在普通的目录列表中。
在调用 IsHidden
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::IsNormal
调用此成员函数以确定所找到文件是否为普通文件。
BOOL IsNormal() const;
返回值
如果成功,则不为 0;否则为 0。
注解
使用 FILE_ATTRIBUTE_NORMAL
(WIN32_FIND_DATA
结构中标识的文件属性)标记的文件。 普通文件没有其他属性集。 所有其他文件属性会替代此属性。
在调用 IsNormal
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::IsReadOnly
调用此成员函数以确定所找到文件是否为只读文件。
BOOL IsReadOnly() const;
返回值
如果成功,则不为 0;否则为 0。
备注
只读文件使用 FILE_ATTRIBUTE_READONLY
(WIN32_FIND_DATA
结构中标识的文件属性)进行标记。 应用程序可以读取此类文件,但无法写入或删除该文件。
在调用 IsReadOnly
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::IsSystem
调用此成员函数以确定所找到文件是否为系统文件。
BOOL IsSystem() const;
返回值
如果成功,则不为 0;否则为 0。
备注
系统文件使用 FILE_ATTRIBUTE_SYSTEM
(WIN32_FIND_DATA
结构中标识的文件属性)进行标记。 系统文件是操作系统的一部分,或者仅由操作系统使用。
在调用 IsSystem
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::IsTemporary
调用此成员函数以确定所找到文件是否为临时文件。
BOOL IsTemporary() const;
返回值
如果成功,则不为 0;否则为 0。
注解
临时文件使用 FILE_ATTRIBUTE_TEMPORARY
(WIN32_FIND_DATA
结构中标识的文件属性)进行标记。 临时文件用于临时存储。 只有绝对必要时,应用程序才应写入文件。 文件的大部分数据保留在内存中,而不会刷新到媒体,因为文件很快就会删除。
在调用 IsTemporary
前,必须至少调用一次 FindNextFile
。
有关文件属性的完整列表,请参阅成员函数 MatchesMask
。
示例
请参阅 CFileFind::GetLength
的示例。
CFileFind::m_pTM
指向 CAtlTransactionManager
对象的指针。
CAtlTransactionManager* m_pTM;
备注
CFileFind::MatchesMask
调用此成员函数以测试所找到文件的文件属性。
virtual BOOL MatchesMask(DWORD dwMask) const;
参数
dwMask
为所找到文件指定一个或多个文件属性(在 WIN32_FIND_DATA
结构中标识)。 若要搜索多种属性,请使用按位 OR (|
) 运算符。 可以接受以下属性的任意组合:
FILE_ATTRIBUTE_ARCHIVE
该文件是存档文件。 应用程序使用此属性来标记要备份或删除的文件。FILE_ATTRIBUTE_COMPRESSED
文件或目录已压缩。 对于文件,这意味着文件中的所有数据都会压缩。 对于目录,这意味着压缩是新创建文件和子目录的默认设置。FILE_ATTRIBUTE_DIRECTORY
该文件是一个目录。FILE_ATTRIBUTE_NORMAL
普通文件没有其他属性集。 此属性仅在单独使用时有效。 所有其他文件属性会替代此属性。FILE_ATTRIBUTE_HIDDEN
文件已隐藏。 该文件不会包括在普通的目录列表中。FILE_ATTRIBUTE_READONLY
文件为只读文件。 应用程序可以读取该文件,但无法写入或删除该文件。FILE_ATTRIBUTE_SYSTEM
该文件是操作系统的一部分,或者仅由操作系统使用。FILE_ATTRIBUTE_TEMPORARY
该文件用于临时存储。 只有绝对必要时,应用程序才应写入文件。 文件的大部分数据保留在内存中,而不会刷新到媒体,因为文件很快就会删除。
返回值
如果成功,则不为 0;否则为 0。 若要获得扩展的错误信息,请调用 Win32 函数 GetLastError
。
注解
在调用 MatchesMask
前,必须至少调用一次 FindNextFile
。
示例
// This code fragment shows all of the files in the root directory
// of drive C: which have either the hidden attribute or the system
// attribute, or both.
CFileFind finder;
BOOL bWorking = finder.FindFile(_T("C:\\*.*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.MatchesMask(FILE_ATTRIBUTE_HIDDEN |
FILE_ATTRIBUTE_SYSTEM))
{
_tprintf_s(_T("%s\n"), (LPCTSTR) finder.GetFileName());
}
}
另请参阅
CObject
类
层次结构图
CFtpFileFind
类
CGopherFileFind
类
CInternetFile
类
CGopherFile
类
CHttpFile
类