CFileFind

执行本地文件搜索,并且是执行 Internet 文件搜索的 CGopherFileFindCFtpFileFind 的基类。

语法

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 编程一文。

继承层次结构

CObject

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();

注解

关闭搜索句柄的当前值指定的文件。 替代此函数以更改默认行为。

必须至少调用一次 FindFileFindNextFile 函数才能检索有效的搜索句柄。 FindFileFindNextFile 函数使用搜索句柄查找名称与给定名称匹配的文件。

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_ARCHIVEWIN32_FIND_DATA 结构中标识的文件属性)标记要备份或删除的存档文件。

在调用 IsArchived 前,必须至少调用一次 FindNextFile

有关文件属性的完整列表,请参阅成员函数 MatchesMask

示例

请参阅 CFileFind::GetLength 的示例。

CFileFind::IsCompressed

调用此成员函数以确定所找到文件是否已压缩。

BOOL IsCompressed() const;

返回值

如果成功,则不为 0;否则为 0。

注解

压缩文件使用 FILE_ATTRIBUTE_COMPRESSEDWIN32_FIND_DATA 结构中标识的文件属性)进行标记。 对于文件,此属性指示文件中的所有数据都会压缩。 对于目录,此属性指示压缩是新创建文件和子目录的默认设置。

在调用 IsCompressed 前,必须至少调用一次 FindNextFile

有关文件属性的完整列表,请参阅成员函数 MatchesMask

示例

请参阅 CFileFind::GetLength 的示例。

CFileFind::IsDirectory

调用此成员函数以确定所找到文件是否为目录。

BOOL IsDirectory() const;

返回值

如果成功,则不为 0;否则为 0。

备注

作为目录的文件使用 FILE_ATTRIBUTE_DIRECTORYWIN32_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_HIDDENWIN32_FIND_DATA 结构中标识的文件属性)进行标记。 隐藏文件没有包括在普通的目录列表中。

在调用 IsHidden 前,必须至少调用一次 FindNextFile

有关文件属性的完整列表,请参阅成员函数 MatchesMask

示例

请参阅 CFileFind::GetLength 的示例。

CFileFind::IsNormal

调用此成员函数以确定所找到文件是否为普通文件。

BOOL IsNormal() const;

返回值

如果成功,则不为 0;否则为 0。

注解

使用 FILE_ATTRIBUTE_NORMALWIN32_FIND_DATA 结构中标识的文件属性)标记的文件。 普通文件没有其他属性集。 所有其他文件属性会替代此属性。

在调用 IsNormal 前,必须至少调用一次 FindNextFile

有关文件属性的完整列表,请参阅成员函数 MatchesMask

示例

请参阅 CFileFind::GetLength 的示例。

CFileFind::IsReadOnly

调用此成员函数以确定所找到文件是否为只读文件。

BOOL IsReadOnly() const;

返回值

如果成功,则不为 0;否则为 0。

备注

只读文件使用 FILE_ATTRIBUTE_READONLYWIN32_FIND_DATA 结构中标识的文件属性)进行标记。 应用程序可以读取此类文件,但无法写入或删除该文件。

在调用 IsReadOnly 前,必须至少调用一次 FindNextFile

有关文件属性的完整列表,请参阅成员函数 MatchesMask

示例

请参阅 CFileFind::GetLength 的示例。

CFileFind::IsSystem

调用此成员函数以确定所找到文件是否为系统文件。

BOOL IsSystem() const;

返回值

如果成功,则不为 0;否则为 0。

备注

系统文件使用 FILE_ATTRIBUTE_SYSTEMWIN32_FIND_DATA 结构中标识的文件属性)进行标记。 系统文件是操作系统的一部分,或者仅由操作系统使用。

在调用 IsSystem 前,必须至少调用一次 FindNextFile

有关文件属性的完整列表,请参阅成员函数 MatchesMask

示例

请参阅 CFileFind::GetLength 的示例。

CFileFind::IsTemporary

调用此成员函数以确定所找到文件是否为临时文件。

BOOL IsTemporary() const;

返回值

如果成功,则不为 0;否则为 0。

注解

临时文件使用 FILE_ATTRIBUTE_TEMPORARYWIN32_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