CFileFind
類別
執行本機檔案搜尋,而 是 和CFtpFileFind
的CGopherFileFind
基類,它會執行因特網檔案搜尋。
語法
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 進行因特網程式設計一文。
繼承階層架構
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();
備註
關閉搜尋句柄目前值所指定的檔案。 覆寫此函式以變更預設行為。
您必須至少呼叫 FindFile
或 FindNextFile
函式一次,才能擷取有效的搜尋句柄。 和 FindNextFile
函FindFile
式會使用搜尋句柄來尋找名稱符合指定名稱的檔案。
CFileFind::FindFile
呼叫此成員函式以開啟檔案搜尋。
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwUnused = 0);
參數
pstrName
字串的指標,其中包含要尋找的檔名。 如果您傳遞 NULL
,pstrName
FindFile
則會執行通配符 (*.*) 搜尋。
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
時會產生*.dat
GetRoot
傳回空字串的結果。 傳遞路徑,例如 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
類