分享方式:


CFileFind 類別

執行本機檔案搜尋,而 是 和CFtpFileFindCGopherFileFind基類,它會執行因特網檔案搜尋。

語法

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 包含開始搜尋、尋找檔案,以及傳回檔案標題、名稱或路徑的成員函式。 針對因特網搜尋,成員函式 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++ Standard Library cout 類別。 這 cout 一行可以取代為 對的呼叫 CListBox::AddString,例如,在程式中使用圖形用戶介面。

如需如何使用 CFileFind 和其他 WinInet 類別的詳細資訊,請參閱使用 WinInet 進行因特網程式設計一文

繼承階層架構

CObject

CFileFind

需求

頁眉: afx.h

CFileFind::CFileFind

建構 物件時 CFileFind 會呼叫這個成員函式。

CFileFind();
CFileFind(CAtlTransactionManager* pTM);

參數

pTM
CAtlTransactionManager 物件的指標

範例

請參閱 CFileFind::GetFileName 的範例。

CFileFind::Close

呼叫此成員函式以結束搜尋、重設內容,以及釋放所有資源。

void Close();

備註

呼叫 Close之後,您不需要先建立新的 CFileFind 實例,再呼叫 FindFile 以開始新的搜尋。

範例

請參閱 CFileFind::GetFileName 的範例。

CFileFind::CloseContext

關閉目前搜尋句柄指定的檔案。

virtual void CloseContext();

備註

關閉搜尋句柄目前值所指定的檔案。 覆寫此函式以變更預設行為。

您必須至少呼叫 FindFileFindNextFile 函式一次,才能擷取有效的搜尋句柄。 和 FindNextFileFindFile式會使用搜尋句柄來尋找名稱符合指定名稱的檔案。

CFileFind::FindFile

呼叫此成員函式以開啟檔案搜尋。

virtual BOOL FindFile(
    LPCTSTR pstrName = NULL,
    DWORD dwUnused = 0);

參數

pstrName
字串的指標,其中包含要尋找的檔名。 如果您傳遞 NULLpstrNameFindFile則會執行通配符 (*.*) 搜尋。

dwUnused
保留以使用衍生類別進行 FindFile 多型。 必須是 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。 GetCreationTime只有在從未在此CFileFind物件上呼叫時,才會FindNextFile傳回 0。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetCreationTime

注意

並非所有文件系統都使用相同的語意來實作此函式傳回的時間戳。 如果基礎文件系統或伺服器不支援保留 time 屬性,此函式可能會傳回其他時間戳函式所傳回的相同值。 如需時間格式的相關信息, WIN32_FIND_DATA 請參閱 結構。 在某些操作系統上,傳回的時間位於本機計算機的時區,檔案所在的位置。 如需詳細資訊,請參閱 Win32 FileTimeToLocalFileTime API。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::GetFileName

呼叫這個成員函式以取得找到的檔名。

virtual CString GetFileName() const;

傳回值

最近找到之檔案的名稱。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetFileName。

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;

傳回值

指定檔案的路徑。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetFilePath

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;

傳回值

檔案的標題。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetFileTitle

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。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetFileURL

GetFileURL 與成員函 GetFilePath式類似,不同之處在於它會以 格式 file://path傳回 URL。 例如,呼叫 GetFileURL 以取得 完整 URL 以 myfile.txt 傳回 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。 GetLastAccessTime只有在從未在此CFileFind物件上呼叫時,才會FindNextFile傳回 0。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetLastAccessTime

注意

並非所有文件系統都使用相同的語意來實作此函式傳回的時間戳。 如果基礎文件系統或伺服器不支援保留 time 屬性,此函式可能會傳回其他時間戳函式所傳回的相同值。 如需時間格式的相關信息, 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。 GetLastWriteTime只有在從未在此CFileFind物件上呼叫時,才會FindNextFile傳回 0。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetLastWriteTime

注意

並非所有文件系統都使用相同的語意來實作此函式傳回的時間戳。 如果基礎文件系統或伺服器不支援保留 time 屬性,此函式可能會傳回其他時間戳函式所傳回的相同值。 如需時間格式的相關信息, WIN32_FIND_DATA 請參閱 結構。 在某些操作系統上,傳回的時間位於本機計算機的時區,檔案所在的位置。 如需詳細資訊,請參閱 Win32 FileTimeToLocalFileTime API。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::GetLength

呼叫這個成員函式,以位元組為單位取得找到的檔案長度。

ULONGLONG GetLength() const;

傳回值

找到檔案的長度,以位元組為單位。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetLength

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;

傳回值

使用中搜尋的根目錄。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 GetRoot

此成員函式會傳回用來啟動搜尋的磁碟驅動器規範和路徑名稱。 例如,呼叫 FindFile 時會產生*.datGetRoot傳回空字串的結果。 傳遞路徑,例如 c:\windows\system\*.dll,以FindFile傳回 c:\windows\system\的結果GetRoot

範例

請參閱 CFileFind::GetFileName 的範例。

CFileFind::IsArchived

呼叫這個成員函式,以判斷找到的檔案是否已封存。

BOOL IsArchived() const;

傳回值

如果成功則為非零;否則為 0。

備註

應用程式會將要備份或移除的封存盤案標示為 ,並具有 FILE_ATTRIBUTE_ARCHIVE結構中所識別的 WIN32_FIND_DATA 檔案屬性。

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsArchived

如需檔案屬性的完整清單,請參閱成員函 MatchesMask 式。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::IsCompressed

呼叫這個成員函式,以判斷找到的檔案是否已壓縮。

BOOL IsCompressed() const;

傳回值

如果成功則為非零;否則為 0。

備註

壓縮檔會標示為 FILE_ATTRIBUTE_COMPRESSED,這是結構中識別的 WIN32_FIND_DATA 檔案屬性。 對於檔案,這個屬性表示檔案中的所有數據都會壓縮。 對於目錄,這個屬性表示壓縮是新建立檔案和子目錄的預設值。

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsCompressed

如需檔案屬性的完整清單,請參閱成員函 MatchesMask 式。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::IsDirectory

呼叫這個成員函式,以判斷找到的檔案是否為目錄。

BOOL IsDirectory() const;

傳回值

如果成功則為非零;否則為 0。

備註

目錄的檔案會以 結構中所識別的WIN32_FIND_DATA檔案屬性標示FILE_ATTRIBUTE_DIRECTORY

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsDirectory

如需檔案屬性的完整清單,請參閱成員函 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。

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsDots

範例

請參閱 CFileFind::IsDirectory 的範例。

CFileFind::IsHidden

呼叫這個成員函式,以判斷找到的檔案是否隱藏。

BOOL IsHidden() const;

傳回值

如果成功則為非零;否則為 0。

備註

隱藏的檔案會標示 FILE_ATTRIBUTE_HIDDEN為 ,這是結構中識別的 WIN32_FIND_DATA 檔案屬性。 隱藏的檔案不包含在一般目錄清單中。

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsHidden

如需檔案屬性的完整清單,請參閱成員函 MatchesMask 式。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::IsNormal

呼叫這個成員函式,判斷找到的檔案是否為一般檔案。

BOOL IsNormal() const;

傳回值

如果成功則為非零;否則為 0。

備註

標示為 FILE_ATTRIBUTE_NORMAL的檔案,是結構中識別的 WIN32_FIND_DATA 檔案屬性。 一般檔案沒有設定其他屬性。 所有其他檔案屬性都會覆寫此屬性。

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsNormal

如需檔案屬性的完整清單,請參閱成員函 MatchesMask 式。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::IsReadOnly

呼叫這個成員函式,以判斷找到的檔案是否為唯讀。

BOOL IsReadOnly() const;

傳回值

如果成功則為非零;否則為 0。

備註

唯讀檔案會標示為 FILE_ATTRIBUTE_READONLY,這是在 結構中識別的 WIN32_FIND_DATA 檔案屬性。 應用程式可以讀取這類檔案,但無法寫入或刪除它。

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsReadOnly

如需檔案屬性的完整清單,請參閱成員函 MatchesMask 式。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::IsSystem

呼叫這個成員函式,判斷找到的檔案是否為系統檔案。

BOOL IsSystem() const;

傳回值

如果成功則為非零;否則為 0。

備註

系統檔案會標示為 FILE_ATTRIBUTE_SYSTEM,這是在 結構中識別的 WIN32_FIND_DATA 檔案屬性。 系統檔案是操作系統的一部分,或是由操作系統獨佔使用。

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsSystem

如需檔案屬性的完整清單,請參閱成員函 MatchesMask 式。

範例

請參閱 CFileFind::GetLength 的範例。

CFileFind::IsTemporary

呼叫這個成員函式,以判斷找到的檔案是否為臨時檔。

BOOL IsTemporary() const;

傳回值

如果成功則為非零;否則為 0。

備註

臨時檔會標示為 FILE_ATTRIBUTE_TEMPORARY,這是結構中識別的 WIN32_FIND_DATA 檔案屬性。 暫存盤用於暫存盤。 只有在絕對必要的情況下,應用程式才應該寫入檔案。 大部分檔案的數據會保留在記憶體中,而不會排清到媒體,因為檔案很快就會被刪除。

您至少必須呼叫 FindNextFile 一次,才能呼叫 IsTemporary

如需檔案屬性的完整清單,請參閱成員函 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。 若要取得擴充的錯誤資訊,請呼叫 Win32 函式 GetLastError

備註

您至少必須呼叫 FindNextFile 一次,才能呼叫 MatchesMask

範例

// 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