CFileFind
Klasa
Wykonuje wyszukiwania plików lokalnych i jest klasą bazową dla CGopherFileFind
i CFtpFileFind
, która wykonuje wyszukiwania w plikach internetowych.
Składnia
class CFileFind : public CObject
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CFileFind::CFileFind |
CFileFind Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CFileFind::Close |
Zamyka żądanie wyszukiwania. |
CFileFind::FindFile |
Wyszukuje w katalogu określoną nazwę pliku. |
CFileFind::FindNextFile |
Kontynuuje wyszukiwanie plików z poprzedniego wywołania metody FindFile . |
CFileFind::GetCreationTime |
Pobiera czas utworzenia pliku. |
CFileFind::GetFileName |
Pobiera nazwę, w tym rozszerzenie znalezionego pliku |
CFileFind::GetFilePath |
Pobiera całą ścieżkę znalezionego pliku. |
CFileFind::GetFileTitle |
Pobiera tytuł znalezionego pliku. Tytuł nie zawiera rozszerzenia. |
CFileFind::GetFileURL |
Pobiera adres URL, w tym ścieżkę pliku znalezionego. |
CFileFind::GetLastAccessTime |
Pobiera czas ostatniego uzyskania dostępu do pliku. |
CFileFind::GetLastWriteTime |
Pobiera czas ostatniej zmiany i zapisania pliku. |
CFileFind::GetLength |
Pobiera długość znalezionego pliku w bajtach. |
CFileFind::GetRoot |
Pobiera katalog główny znalezionego pliku. |
CFileFind::IsArchived |
Określa, czy znaleziony plik jest zarchiwizowany. |
CFileFind::IsCompressed |
Określa, czy znaleziony plik jest skompresowany. |
CFileFind::IsDirectory |
Określa, czy znaleziony plik jest katalogiem. |
CFileFind::IsDots |
Określa, czy nazwa znalezionego pliku ma nazwę "." lub "."." wskazującą, że jest to katalog. |
CFileFind::IsHidden |
Określa, czy znaleziony plik jest ukryty. |
CFileFind::IsNormal |
Określa, czy znaleziony plik jest normalny (innymi słowy, nie ma innych atrybutów). |
CFileFind::IsReadOnly |
Określa, czy znaleziony plik jest tylko do odczytu. |
CFileFind::IsSystem |
Określa, czy znaleziony plik jest plikiem systemowym. |
CFileFind::IsTemporary |
Określa, czy znaleziony plik jest tymczasowy. |
CFileFind::MatchesMask |
Wskazuje żądane atrybuty pliku do znalezienia. |
Metody chronione
Nazwa/nazwisko | opis |
---|---|
CFileFind::CloseContext |
Zamyka plik określony przez bieżący uchwyt wyszukiwania. |
Chronione składowe danych
Nazwa/nazwisko | opis |
---|---|
CFileFind::m_pTM |
Wskaźnik do CAtlTransactionManager obiektu. |
Uwagi
CFileFind
zawiera funkcje składowe, które rozpoczynają wyszukiwanie, lokalizują plik i zwracają tytuł, nazwę lub ścieżkę pliku. W przypadku wyszukiwania w Internecie funkcja GetFileURL
składowa zwraca adres URL pliku.
CFileFind
jest klasą bazową dla dwóch innych klas MFC przeznaczonych do wyszukiwania określonych typów serwerów: CGopherFileFind
działa specjalnie z serwerami gopher i CFtpFileFind
działa specjalnie z serwerami FTP. Razem te trzy klasy zapewniają bezproblemowy mechanizm znajdowania plików przez klienta, niezależnie od protokołu serwera, typu pliku lub lokalizacji na komputerze lokalnym lub serwerze zdalnym.
Poniższy kod spowoduje wyliczenie wszystkich plików w bieżącym katalogu, co spowoduje wydrukowanie nazwy każdego pliku:
CFileFind finder;
BOOL bWorking = finder.FindFile(_T("*.*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
}
Aby zachować prosty przykład, ten kod używa klasy Biblioteka cout
Standardowa języka C++. Wiersz cout
można zastąpić wywołaniem metody CListBox::AddString
, na przykład w programie za pomocą graficznego interfejsu użytkownika.
Aby uzyskać więcej informacji na temat używania CFileFind
i innych klas WinInet, zobacz artykuł Internet Programming with WinInet (Programowanie internetowe za pomocą usługi WinInet).
Hierarchia dziedziczenia
CFileFind
Wymagania
Nagłówek: afx.h
CFileFind::CFileFind
Ta funkcja składowa jest wywoływana podczas CFileFind
konstruowania obiektu.
CFileFind();
CFileFind(CAtlTransactionManager* pTM);
Parametry
pTM
Wskaźnik do obiektu CAtlTransactionManager
Przykład
Zobacz przykład dla elementu CFileFind::GetFileName
.
CFileFind::Close
Wywołaj tę funkcję składową, aby zakończyć wyszukiwanie, zresetować kontekst i zwolnić wszystkie zasoby.
void Close();
Uwagi
Po wywołaniu Close
metody nie trzeba tworzyć nowego CFileFind
wystąpienia przed wywołaniem FindFile
w celu rozpoczęcia nowego wyszukiwania.
Przykład
Zobacz przykład dla elementu CFileFind::GetFileName
.
CFileFind::CloseContext
Zamyka plik określony przez bieżący uchwyt wyszukiwania.
virtual void CloseContext();
Uwagi
Zamyka plik określony przez bieżącą wartość dojścia wyszukiwania. Zastąpij tę funkcję, aby zmienić domyślne zachowanie.
Aby pobrać prawidłowy uchwyt wyszukiwania, należy wywołać FindFile
funkcje lub FindNextFile
co najmniej raz. Funkcje FindFile
i FindNextFile
używają dojścia wyszukiwania do lokalizowania plików o nazwach pasujących do danej nazwy.
CFileFind::FindFile
Wywołaj tę funkcję składową, aby otworzyć wyszukiwanie plików.
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwUnused = 0);
Parametry
pstrName
Wskaźnik do ciągu zawierającego nazwę pliku do znalezienia. Jeśli przekażesz NULL
element pstrName
, FindFile
wykonuje wyszukiwanie symbolem wieloznacznymi (*.*).
dwUnused
Zarezerwowane do tworzenia FindFile
polimorficznych z klas pochodnych. Musi mieć wartość 0.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0. Aby uzyskać rozszerzone informacje o błędzie, wywołaj funkcję GetLastError
Win32 .
Uwagi
Po wywołaniu metody FindFile
w celu rozpoczęcia wyszukiwania plików wywołaj metodę FindNextFile
, aby pobrać kolejne pliki. Przed wywołaniem dowolnej z następujących funkcji składowych atrybutów należy wywołać FindNextFile
co najmniej raz:
Przykład
Zobacz przykład dla elementu CFileFind::IsDirectory
.
CFileFind::FindNextFile
Wywołaj tę funkcję składową, aby kontynuować wyszukiwanie plików z poprzedniego wywołania metody FindFile
.
virtual BOOL FindNextFile();
Wartość zwracana
Niezerowe, jeśli istnieje więcej plików; zero, jeśli znaleziony plik jest ostatnim w katalogu lub jeśli wystąpił błąd. Aby uzyskać rozszerzone informacje o błędzie, wywołaj funkcję GetLastError
Win32 . Jeśli znaleziony plik jest ostatnim plikiem w katalogu lub jeśli nie można odnaleźć pasujących plików, GetLastError
funkcja zwróci ERROR_NO_MORE_FILES
wartość .
Uwagi
Przed wywołaniem dowolnej z następujących funkcji składowych atrybutów należy wywołać FindNextFile
co najmniej raz:
FindNextFile
Opakowuje funkcję FindNextFile
Win32 .
Przykład
Zobacz przykład dla elementu CFileFind::IsDirectory
.
CFileFind::GetCreationTime
Wywołaj tę funkcję składową, aby uzyskać czas utworzenia określonego pliku.
virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const;
virtual BOOL GetCreationTime(CTime& refTime) const;
Parametry
pTimeStamp
Wskaźnik do FILETIME
struktury zawierającej czas utworzenia pliku.
refTime
Odwołanie do CTime
obiektu.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; 0, jeśli nie powiedzie się. GetCreationTime
Zwraca wartość 0 tylko wtedy, gdy FindNextFile
nigdy nie wywołano tego CFileFind
obiektu.
Uwagi
Przed wywołaniem metody GetCreationTime
należy zadzwonić FindNextFile
co najmniej raz.
Uwaga
Nie wszystkie systemy plików używają tej samej semantyki, aby zaimplementować sygnaturę czasową zwracaną przez tę funkcję. Ta funkcja może zwrócić tę samą wartość zwracaną przez inne funkcje sygnatury czasowej, jeśli podstawowy system plików lub serwer nie obsługuje przechowywania atrybutu czasu. WIN32_FIND_DATA
Zobacz strukturę, aby uzyskać informacje o formatach czasu. W niektórych systemach operacyjnych zwrócony czas znajduje się w strefie czasowej lokalnej dla maszyny, w których znajduje się plik. Aby uzyskać więcej informacji, zobacz interfejs API Win32 FileTimeToLocalFileTime
.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::GetFileName
Wywołaj tę funkcję składową, aby uzyskać nazwę znalezionego pliku.
virtual CString GetFileName() const;
Wartość zwracana
Nazwa ostatnio znalezionego pliku.
Uwagi
Przed wywołaniem metody GetFileName należy wywołać co FindNextFile
najmniej raz.
GetFileName
jest jedną z trzech CFileFind
funkcji członkowskich, które zwracają jakąś formę nazwy pliku. Poniższa lista zawiera opis trzech elementów i ich różnice:
GetFileName
zwraca nazwę pliku, w tym rozszerzenie. Na przykład wywołanie metodyGetFileName
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca nazwęmyfile.txt
pliku .GetFilePath
Zwraca całą ścieżkę dla pliku. Na przykład wywołanie metodyGetFilePath
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca ścieżkęc:\myhtml\myfile.txt
pliku .GetFileTitle
Zwraca nazwę pliku, z wyłączeniem rozszerzenia pliku. Na przykład wywołanie metodyGetFileTitle
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca tytułmyfile
pliku .
Przykład
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
Wywołaj tę funkcję składową, aby uzyskać pełną ścieżkę określonego pliku.
virtual CString GetFilePath() const;
Wartość zwracana
Ścieżka określonego pliku.
Uwagi
Przed wywołaniem metody GetFilePath
należy zadzwonić FindNextFile
co najmniej raz.
GetFilePath
jest jedną z trzech CFileFind
funkcji członkowskich, które zwracają jakąś formę nazwy pliku. Poniższa lista zawiera opis trzech elementów i ich różnice:
GetFileName
zwraca nazwę pliku, w tym rozszerzenie. Na przykład wywołanie metodyGetFileName
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca nazwęmyfile.txt
pliku .GetFilePath
Zwraca całą ścieżkę dla pliku. Na przykład wywołanie metodyGetFilePath
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca ścieżkęc:\myhtml\myfile.txt
pliku .Funkcja GetFileTitle zwraca nazwę pliku, z wyłączeniem rozszerzenia pliku. Na przykład wywołanie metody
GetFileTitle
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca tytułmyfile
pliku .
Przykład
Zobacz przykład dla elementu CFileFind::GetFileName
.
CFileFind::GetFileTitle
Wywołaj tę funkcję składową, aby uzyskać tytuł znalezionego pliku.
virtual CString GetFileTitle() const;
Wartość zwracana
Tytuł pliku.
Uwagi
Przed wywołaniem metody GetFileTitle
należy zadzwonić FindNextFile
co najmniej raz.
GetFileTitle
jest jedną z trzech CFileFind
funkcji członkowskich, które zwracają jakąś formę nazwy pliku. Poniższa lista zawiera opis trzech elementów i ich różnice:
GetFileName
zwraca nazwę pliku, w tym rozszerzenie. Na przykład wywołanie metodyGetFileName
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca nazwęmyfile.txt
pliku .GetFilePath
Zwraca całą ścieżkę dla pliku. Na przykład wywołanie metodyGetFilePath
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca ścieżkę pliku c:\myhtml\myfile.txt.GetFileTitle
Zwraca nazwę pliku, z wyłączeniem rozszerzenia pliku. Na przykład wywołanie metodyGetFileTitle
w celu wygenerowania komunikatu użytkownika o plikuc:\myhtml\myfile.txt
zwraca tytułmyfile
pliku .
Przykład
Zobacz przykład dla elementu CFileFind::GetFileName
.
CFileFind::GetFileURL
Wywołaj tę funkcję składową, aby pobrać określony adres URL.
virtual CString GetFileURL() const;
Wartość zwracana
Pełny adres URL.
Uwagi
Przed wywołaniem metody GetFileURL
należy zadzwonić FindNextFile
co najmniej raz.
GetFileURL
jest podobny do funkcji GetFilePath
składowej , z tą różnicą, że zwraca adres URL w formularzu file://path
. Na przykład wywołanie metody GetFileURL
w celu uzyskania pełnego adresu URL dla myfile.txt
funkcji zwraca adres URL file://c:\myhtml\myfile.txt
.
Przykład
Zobacz przykład dla elementu CFileFind::GetFileName
.
CFileFind::GetLastAccessTime
Wywołaj tę funkcję składową, aby uzyskać czas ostatniego uzyskania dostępu do określonego pliku.
virtual BOOL GetLastAccessTime(CTime& refTime) const;
virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;
Parametry
refTime
Odwołanie do CTime
obiektu.
pTimeStamp
Wskaźnik do FILETIME
struktury zawierającej czas ostatniego uzyskania dostępu do pliku.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; 0, jeśli nie powiedzie się. GetLastAccessTime
Zwraca wartość 0 tylko wtedy, gdy FindNextFile
nigdy nie wywołano tego CFileFind
obiektu.
Uwagi
Przed wywołaniem metody GetLastAccessTime
należy zadzwonić FindNextFile
co najmniej raz.
Uwaga
Nie wszystkie systemy plików używają tej samej semantyki, aby zaimplementować sygnaturę czasową zwracaną przez tę funkcję. Ta funkcja może zwrócić tę samą wartość zwracaną przez inne funkcje sygnatury czasowej, jeśli podstawowy system plików lub serwer nie obsługuje przechowywania atrybutu czasu. WIN32_FIND_DATA
Zobacz strukturę, aby uzyskać informacje o formatach czasu. W niektórych systemach operacyjnych zwrócony czas znajduje się w strefie czasowej lokalnej dla maszyny, w których znajduje się plik. Aby uzyskać więcej informacji, zobacz interfejs API Win32 FileTimeToLocalFileTime
.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::GetLastWriteTime
Wywołaj tę funkcję składową, aby uzyskać ostatnią zmianę pliku.
virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;
virtual BOOL GetLastWriteTime(CTime& refTime) const;
Parametry
pTimeStamp
Wskaźnik do FILETIME
struktury zawierającej czas ostatniego zapisania pliku.
refTime
Odwołanie do CTime
obiektu.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; 0, jeśli nie powiedzie się. GetLastWriteTime
Zwraca wartość 0 tylko wtedy, gdy FindNextFile
nigdy nie wywołano tego CFileFind
obiektu.
Uwagi
Przed wywołaniem metody GetLastWriteTime
należy zadzwonić FindNextFile
co najmniej raz.
Uwaga
Nie wszystkie systemy plików używają tej samej semantyki, aby zaimplementować sygnaturę czasową zwracaną przez tę funkcję. Ta funkcja może zwrócić tę samą wartość zwracaną przez inne funkcje sygnatury czasowej, jeśli podstawowy system plików lub serwer nie obsługuje przechowywania atrybutu czasu. WIN32_FIND_DATA
Zobacz strukturę, aby uzyskać informacje o formatach czasu. W niektórych systemach operacyjnych zwrócony czas znajduje się w strefie czasowej lokalnej dla maszyny, w których znajduje się plik. Aby uzyskać więcej informacji, zobacz interfejs API Win32 FileTimeToLocalFileTime
.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::GetLength
Wywołaj tę funkcję składową, aby uzyskać długość znalezionego pliku w bajtach.
ULONGLONG GetLength() const;
Wartość zwracana
Długość znalezionego pliku w bajtach.
Uwagi
Przed wywołaniem metody GetLength
należy zadzwonić FindNextFile
co najmniej raz.
GetLength
używa struktury WIN32_FIND_DATA
Win32, aby uzyskać i zwrócić wartość rozmiaru pliku w bajtach.
Uwaga
Od MFC 7.0 GetLength
obsługuje 64-bitowe typy całkowite. Wcześniej istniejący kod utworzony przy użyciu tej nowszej wersji biblioteki może spowodować obcinanie ostrzeżeń.
Przykład
// 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
Wywołaj tę funkcję składową, aby uzyskać katalog główny znalezionego pliku.
virtual CString GetRoot() const;
Wartość zwracana
Katalog główny aktywnego wyszukiwania.
Uwagi
Przed wywołaniem metody GetRoot
należy zadzwonić FindNextFile
co najmniej raz.
Ta funkcja składowa zwraca specyfikator dysku i nazwę ścieżki używaną do uruchamiania wyszukiwania. Na przykład wywołanie FindFile
z wynikami GetRoot
*.dat
zwraca pusty ciąg. Przekazywanie ścieżki, takiej jak c:\windows\system\*.dll
, do FindFile
wyników GetRoot
zwracających c:\windows\system\
wartość .
Przykład
Zobacz przykład dla elementu CFileFind::GetFileName
.
CFileFind::IsArchived
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest zarchiwizowany.
BOOL IsArchived() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Aplikacje oznaczają plik archiwum, którego kopia zapasowa ma zostać utworzona lub usunięta, z atrybutem FILE_ATTRIBUTE_ARCHIVE
pliku zidentyfikowanym w WIN32_FIND_DATA
strukturze.
Przed wywołaniem metody IsArchived
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::IsCompressed
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest skompresowany.
BOOL IsCompressed() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Skompresowany plik jest oznaczony atrybutem FILE_ATTRIBUTE_COMPRESSED
, atrybutem pliku zidentyfikowanym w WIN32_FIND_DATA
strukturze. W przypadku pliku ten atrybut wskazuje, że wszystkie dane w pliku są kompresowane. W przypadku katalogu ten atrybut wskazuje, że kompresja jest domyślna dla nowo utworzonych plików i podkatalogów.
Przed wywołaniem metody IsCompressed
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::IsDirectory
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest katalogiem.
BOOL IsDirectory() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Plik, który jest katalogiem, jest oznaczony FILE_ATTRIBUTE_DIRECTORY
atrybutem pliku zidentyfikowanym w WIN32_FIND_DATA
strukturze.
Przed wywołaniem metody IsDirectory
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Ten mały program rekursuje każdy katalog na dysku C:\ i wyświetla nazwę katalogu.
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
Wywołaj tę funkcję składową, aby przetestować bieżący katalog i znaczniki katalogu nadrzędnego podczas iteracji za pośrednictwem plików.
virtual BOOL IsDots() const;
Wartość zwracana
Nonzero, jeśli znaleziony plik ma nazwę "." lub "..", co wskazuje, że znaleziony plik jest rzeczywiście katalogiem. W przeciwnym razie 0.
Uwagi
Przed wywołaniem metody IsDots
należy zadzwonić FindNextFile
co najmniej raz.
Przykład
Zobacz przykład dla elementu CFileFind::IsDirectory
.
CFileFind::IsHidden
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest ukryty.
BOOL IsHidden() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Ukryte pliki, które są oznaczone za pomocą FILE_ATTRIBUTE_HIDDEN
, atrybut pliku zidentyfikowany w WIN32_FIND_DATA
strukturze. Ukryty plik nie jest dołączany do zwykłej listy katalogów.
Przed wywołaniem metody IsHidden
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::IsNormal
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest normalnym plikiem.
BOOL IsNormal() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Pliki oznaczone elementem FILE_ATTRIBUTE_NORMAL
, atrybut pliku zidentyfikowany w WIN32_FIND_DATA
strukturze. Normalny plik nie ma innych atrybutów ustawionych. Wszystkie inne atrybuty pliku zastępują ten atrybut.
Przed wywołaniem metody IsNormal
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::IsReadOnly
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest tylko do odczytu.
BOOL IsReadOnly() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Plik tylko do odczytu jest oznaczony FILE_ATTRIBUTE_READONLY
jako , atrybut pliku zidentyfikowany w WIN32_FIND_DATA
strukturze. Aplikacje mogą odczytywać taki plik, ale nie mogą go zapisywać ani usuwać.
Przed wywołaniem metody IsReadOnly
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::IsSystem
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest plikiem systemowym.
BOOL IsSystem() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Plik systemowy jest oznaczony za pomocą FILE_ATTRIBUTE_SYSTEM
atrybutu pliku zidentyfikowanego w WIN32_FIND_DATA
strukturze. Plik systemowy jest częścią systemu operacyjnego lub jest używany wyłącznie przez system operacyjny.
Przed wywołaniem metody IsSystem
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::IsTemporary
Wywołaj tę funkcję składową, aby określić, czy znaleziony plik jest plikiem tymczasowym.
BOOL IsTemporary() const;
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.
Uwagi
Plik tymczasowy jest oznaczony za pomocą FILE_ATTRIBUTE_TEMPORARY
atrybutu , który został zidentyfikowany w WIN32_FIND_DATA
strukturze. Plik tymczasowy jest używany do przechowywania tymczasowego. Aplikacje powinny zapisywać w pliku tylko wtedy, gdy jest to absolutnie konieczne. Większość danych pliku pozostaje w pamięci bez opróżniania do nośnika, ponieważ plik zostanie wkrótce usunięty.
Przed wywołaniem metody IsTemporary
należy zadzwonić FindNextFile
co najmniej raz.
Zobacz funkcję MatchesMask
składową, aby uzyskać pełną listę atrybutów pliku.
Przykład
Zobacz przykład dla elementu CFileFind::GetLength
.
CFileFind::m_pTM
Wskaźnik do CAtlTransactionManager
obiektu.
CAtlTransactionManager* m_pTM;
Uwagi
CFileFind::MatchesMask
Wywołaj tę funkcję składową, aby przetestować atrybuty pliku w znalezionym pliku.
virtual BOOL MatchesMask(DWORD dwMask) const;
Parametry
dwMask
Określa co najmniej jeden atrybut pliku zidentyfikowany w WIN32_FIND_DATA
strukturze dla znalezionego pliku. Aby wyszukać wiele atrybutów, użyj operatora bitowego OR (|
). Dowolna kombinacja następujących atrybutów jest akceptowalna:
FILE_ATTRIBUTE_ARCHIVE
Plik jest plikiem archiwum. Aplikacje używają tego atrybutu do oznaczania plików do tworzenia kopii zapasowej lub usuwania.FILE_ATTRIBUTE_COMPRESSED
Plik lub katalog jest skompresowany. W przypadku pliku oznacza to, że wszystkie dane w pliku są kompresowane. W przypadku katalogu oznacza to, że kompresja jest domyślna dla nowo utworzonych plików i podkatalogów.FILE_ATTRIBUTE_DIRECTORY
Plik jest katalogiem.FILE_ATTRIBUTE_NORMAL
Plik nie ma innych atrybutów ustawionych. Ten atrybut jest prawidłowy tylko wtedy, gdy jest używany sam. Wszystkie inne atrybuty pliku zastępują ten atrybut.FILE_ATTRIBUTE_HIDDEN
Plik jest ukryty. Nie należy go dołączać do zwykłej listy katalogów.FILE_ATTRIBUTE_READONLY
Plik jest tylko do odczytu. Aplikacje mogą odczytywać plik, ale nie mogą go zapisywać ani usuwać.FILE_ATTRIBUTE_SYSTEM
Plik jest częścią lub jest używany wyłącznie przez system operacyjny.FILE_ATTRIBUTE_TEMPORARY
Plik jest używany do przechowywania tymczasowego. Aplikacje powinny zapisywać w pliku tylko wtedy, gdy jest to absolutnie konieczne. Większość danych pliku pozostaje w pamięci bez opróżniania do nośnika, ponieważ plik zostanie wkrótce usunięty.
Wartość zwracana
Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0. Aby uzyskać rozszerzone informacje o błędzie, wywołaj funkcję GetLastError
Win32 .
Uwagi
Przed wywołaniem metody MatchesMask
należy zadzwonić FindNextFile
co najmniej raz.
Przykład
// 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());
}
}
Zobacz też
CObject
Klasa
Wykres hierarchii
CFtpFileFind
Klasa
CGopherFileFind
Klasa
CInternetFile
Klasa
CGopherFile
Klasa
CHttpFile
Klasa