Udostępnij za pośrednictwem


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

CObject

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 Closemetody 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ę GetLastErrorWin32 .

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ę GetLastErrorWin32 . 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_FILESwartość .

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ę FindNextFileWin32 .

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 GetCreationTimenależ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 metody GetFileName w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca nazwę myfile.txtpliku .

  • GetFilePath Zwraca całą ścieżkę dla pliku. Na przykład wywołanie metody GetFilePath w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca ścieżkę c:\myhtml\myfile.txtpliku .

  • GetFileTitle Zwraca nazwę pliku, z wyłączeniem rozszerzenia pliku. Na przykład wywołanie metody GetFileTitle w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca tytuł myfilepliku .

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 GetFilePathnależ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 metody GetFileName w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca nazwę myfile.txtpliku .

  • GetFilePath Zwraca całą ścieżkę dla pliku. Na przykład wywołanie metody GetFilePath w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca ścieżkę c:\myhtml\myfile.txtpliku .

  • Funkcja GetFileTitle zwraca nazwę pliku, z wyłączeniem rozszerzenia pliku. Na przykład wywołanie metody GetFileTitle w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca tytuł myfilepliku .

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 GetFileTitlenależ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 metody GetFileName w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca nazwę myfile.txtpliku .

  • GetFilePath Zwraca całą ścieżkę dla pliku. Na przykład wywołanie metody GetFilePath w celu wygenerowania komunikatu użytkownika o pliku c:\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 metody GetFileTitle w celu wygenerowania komunikatu użytkownika o pliku c:\myhtml\myfile.txt zwraca tytuł myfilepliku .

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 GetFileURLnależy zadzwonić FindNextFile co najmniej raz.

GetFileURL jest podobny do funkcji GetFilePathskł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 GetLastAccessTimenależ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 GetLastWriteTimenależ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 GetLengthnależ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 GetRootnależ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_ARCHIVEpliku zidentyfikowanym w WIN32_FIND_DATA strukturze.

Przed wywołaniem metody IsArchivednależ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 IsCompressednależ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 IsDirectorynależ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 IsDotsnależ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 IsHiddennależ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 IsNormalnależ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_READONLYjako , atrybut pliku zidentyfikowany w WIN32_FIND_DATA strukturze. Aplikacje mogą odczytywać taki plik, ale nie mogą go zapisywać ani usuwać.

Przed wywołaniem metody IsReadOnlynależ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_SYSTEMatrybutu 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 IsSystemnależ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_TEMPORARYatrybutu , 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 IsTemporarynależ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ę GetLastErrorWin32 .

Uwagi

Przed wywołaniem metody MatchesMasknależ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