Compartir a través de


Clase CFileFind

Efectúa búsquedas de archivos locales y es la clase base para CGopherFileFind y CFtpFileFind, que efectúan búsquedas de archivos de Internet.

Sintaxis

class CFileFind : public CObject

Miembros

Constructores públicos

Nombre Descripción
CFileFind::CFileFind Construye un objeto CFileFind.

Métodos públicos

Nombre Descripción
CFileFind::Close Cierra la solicitud de búsqueda.
CFileFind::FindFile Busca en un directorio un nombre de archivo especificado.
CFileFind::FindNextFile Continúa una búsqueda de archivo de una llamada anterior a FindFile.
CFileFind::GetCreationTime Obtiene la hora de creación del archivo.
CFileFind::GetFileName Obtiene el nombre, incluida la extensión, del archivo encontrado.
CFileFind::GetFilePath Obtiene la ruta de acceso completa del archivo encontrado.
CFileFind::GetFileTitle Obtiene el título del archivo encontrado. El título no incluye la extensión.
CFileFind::GetFileURL Obtiene la dirección URL, incluida la ruta de acceso, del archivo encontrado.
CFileFind::GetLastAccessTime Obtiene la hora a la que se accedió por última vez al archivo.
CFileFind::GetLastWriteTime Obtiene la hora en la que el archivo se cambió y se guardó por última vez.
CFileFind::GetLength Obtiene la longitud del archivo encontrado, en bytes.
CFileFind::GetRoot Obtiene el directorio raíz del archivo encontrado.
CFileFind::IsArchived Determina si el archivo encontrado está archivado.
CFileFind::IsCompressed Determina si el archivo encontrado está comprimido.
CFileFind::IsDirectory Determina si el archivo encontrado es un directorio.
CFileFind::IsDots Determina si el nombre del archivo encontrado es "." o "..", lo que indica que es realmente un directorio.
CFileFind::IsHidden Determina si el archivo encontrado está oculto.
CFileFind::IsNormal Determina si el archivo encontrado es normal (es decir, no tiene otros atributos).
CFileFind::IsReadOnly Determina si el archivo encontrado es de solo lectura.
CFileFind::IsSystem Determina si el archivo encontrado es un archivo del sistema.
CFileFind::IsTemporary Determina si el archivo encontrado es temporal.
CFileFind::MatchesMask Indica los atributos de archivo deseados del archivo que se debe encontrar.

Métodos protegidos

Nombre Descripción
CFileFind::CloseContext Cierra el archivo especificado por el identificador de búsqueda actual.

Miembros de datos protegidos

Nombre Descripción
CFileFind::m_pTM Un puntero a un objeto CAtlTransactionManager.

Comentarios

CFileFind incluye funciones miembro que inician una búsqueda, localizan un archivo y devuelven el título, el nombre o la ruta de acceso del archivo. En el caso de las búsquedas en Internet, la función miembro GetFileURL devuelve la dirección URL del archivo.

CFileFind es la clase base para dos otras clases MFC diseñadas para buscar determinados tipos de servidor: CGopherFileFind funciona específicamente con servidores Gopher y CFtpFileFind funciona específicamente con servidores FTP. Combinadas, estas tres clases proporcionan un mecanismo eficiente para que el cliente encuentre archivos, independientemente del protocolo del servidor, del tipo de archivo o de la ubicación, ya sea una máquina local o un servidor remoto.

El código siguiente enumerará todos los archivos del directorio actual e imprimirá el nombre de cada archivo:

CFileFind finder;
BOOL bWorking = finder.FindFile(_T("*.*"));
while (bWorking)
{
   bWorking = finder.FindNextFile();
   TRACE(_T("%s\n"), (LPCTSTR)finder.GetFileName());
} 

Para simplificar el ejemplo, este código usa la clase cout de la biblioteca estándar de C++. La línea cout podría reemplazarse por una llamada a CListBox::AddString, por ejemplo, en un programa con una interfaz gráfica de usuario.

Para más información sobre cómo usar CFileFind y las otras clases de WinInet, consulte el artículo Programación de Internet con WinInet.

Jerarquía de herencia

CObject

CFileFind

Requisitos

Encabezado: afx.h

CFileFind::CFileFind

Se llama a esta función miembro cuando se construye un objeto CFileFind.

CFileFind();
CFileFind(CAtlTransactionManager* pTM);

Parámetros

pTM
Puntero al objeto CAtlTransactionManager

Ejemplo

Vea el ejemplo de CFileFind::GetFileName.

CFileFind::Close

Llame a esta función miembro para finalizar la búsqueda, restablecer el contexto y liberar todos los recursos.

void Close();

Comentarios

Después de llamar a Close, no es necesario crear una nueva instancia de CFileFind antes de llamar a FindFile para iniciar una nueva búsqueda.

Ejemplo

Vea el ejemplo de CFileFind::GetFileName.

CFileFind::CloseContext

Cierra el archivo especificado por el identificador de búsqueda actual.

virtual void CloseContext();

Comentarios

Cierra el archivo especificado por el valor actual del identificador de búsqueda. Invalide esta función para cambiar el comportamiento predeterminado.

Debe llamar a las funciones FindFile o FindNextFile al menos una vez para recuperar un identificador de búsqueda válido. Las funciones FindFile y FindNextFile usan el identificador de búsqueda para localizar archivos con nombres que coincidan con un nombre determinado.

CFileFind::FindFile

Llame a esta función miembro para abrir la búsqueda de un archivo.

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

Parámetros

pstrName
Puntero a una cadena que contiene el nombre del archivo que se va a buscar. Si pasa NULL para pstrName, FindFile realiza una búsqueda con caracteres comodín (*.*).

dwUnused
Reservado para hacer que FindFile sea polimórfico con clases derivadas. Debe ser 0.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero. Para obtener información de errores extendida, llame a la función GetLastError de Win32.

Comentarios

Después de llamar a FindFile para iniciar la búsqueda de archivos, llame a FindNextFile para recuperar los archivos posteriores. Debe llamar a FindNextFile al menos una vez antes de llamar a cualquiera de las siguientes funciones miembro de atributo:

Ejemplo

Vea el ejemplo de CFileFind::IsDirectory.

CFileFind::FindNextFile

Llame a esta función miembro para continuar una búsqueda de archivo desde una llamada anterior a FindFile.

virtual BOOL FindNextFile();

Valor devuelto

Distinto de cero si hay más archivos; cero si el archivo encontrado es el último del directorio o si se produjo un error. Para obtener información de errores extendida, llame a la función GetLastError de Win32. Si el archivo encontrado es el último archivo del directorio o si no se encuentra ningún archivo coincidente, la función GetLastError devuelve ERROR_NO_MORE_FILES.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a cualquiera de las siguientes funciones miembro de atributo:

FindNextFile encapsula la función FindNextFile de Win32.

Ejemplo

Vea el ejemplo de CFileFind::IsDirectory.

CFileFind::GetCreationTime

Llame a esta función miembro para obtener la hora en la que se creó el archivo especificado.

virtual BOOL GetCreationTime(FILETIME* pTimeStamp) const;
virtual BOOL GetCreationTime(CTime& refTime) const;

Parámetros

pTimeStamp
Puntero a una estructura FILETIME que contiene la hora en que se creó el archivo.

refTime
Referencia a un objeto CTime.

Valor devuelto

Distinto de cero si se realiza correctamente; 0 si no. GetCreationTime devuelve 0 solo si nunca se ha llamado a FindNextFile en este objeto CFileFind.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetCreationTime.

Nota:

No todos los sistemas de archivos usan la misma semántica para implementar la marca de tiempo devuelta por esta función. Esta función puede devolver el mismo valor devuelto por otras funciones de marca de tiempo si el servidor o el sistema de archivos subyacentes no admiten mantener el atributo del tiempo. Consulte la estructura WIN32_FIND_DATA para información sobre los formatos de hora. En algunos sistemas operativos, la hora devuelta es la de la zona horaria local de la máquina donde se encuentra el archivo. Consulte la API FileTimeToLocalFileTime de Win32 para más información.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::GetFileName

Llame a esta función miembro para obtener el nombre del archivo encontrado.

virtual CString GetFileName() const;

Valor devuelto

Nombre del archivo encontrado más recientemente.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetFileName.

GetFileName es una de las tres funciones miembro CFileFind que devuelven alguna forma del nombre de archivo. En la lista siguiente se describen las tres y cómo varían:

  • GetFileName devuelve el nombre de archivo, incluida la extensión. Por ejemplo, al llamar a GetFileName para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve el nombre de archivo myfile.txt.

  • GetFilePath devuelve la ruta de acceso completa del archivo. Por ejemplo, al llamar a GetFilePath para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve la ruta de acceso de archivo c:\myhtml\myfile.txt.

  • GetFileTitle devuelve el nombre de archivo, excepto la extensión de archivo. Por ejemplo, al llamar a GetFileTitle para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve el título de archivo myfile.

Ejemplo

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

Llame a esta función miembro para obtener la ruta de acceso completa del archivo especificado.

virtual CString GetFilePath() const;

Valor devuelto

Ruta de acceso del archivo especificado.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetFilePath.

GetFilePath es una de las tres funciones miembro CFileFind que devuelven alguna forma del nombre de archivo. En la lista siguiente se describen las tres y cómo varían:

  • GetFileName devuelve el nombre de archivo, incluida la extensión. Por ejemplo, al llamar a GetFileName para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve el nombre de archivo myfile.txt.

  • GetFilePath devuelve la ruta de acceso completa del archivo. Por ejemplo, al llamar a GetFilePath para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve la ruta de acceso de archivo c:\myhtml\myfile.txt.

  • GetFileTitle devuelve el nombre de archivo, excepto la extensión de archivo. Por ejemplo, al llamar a GetFileTitle para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve el título de archivo myfile.

Ejemplo

Vea el ejemplo de CFileFind::GetFileName.

CFileFind::GetFileTitle

Llame a esta función miembro para obtener el título del archivo encontrado.

virtual CString GetFileTitle() const;

Valor devuelto

Título del archivo.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetFileTitle.

GetFileTitle es una de las tres funciones miembro CFileFind que devuelven alguna forma del nombre de archivo. En la lista siguiente se describen las tres y cómo varían:

  • GetFileName devuelve el nombre de archivo, incluida la extensión. Por ejemplo, al llamar a GetFileName para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve el nombre de archivo myfile.txt.

  • GetFilePath devuelve la ruta de acceso completa del archivo. Por ejemplo, al llamar a GetFilePath para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve la ruta de acceso de archivo c:\myhtml\myfile.txt.

  • GetFileTitle devuelve el nombre de archivo, excepto la extensión de archivo. Por ejemplo, al llamar a GetFileTitle para generar un mensaje de usuario sobre el archivo c:\myhtml\myfile.txt, se devuelve el título de archivo myfile.

Ejemplo

Vea el ejemplo de CFileFind::GetFileName.

CFileFind::GetFileURL

Llame a esta función miembro para recuperar la dirección URL especificada.

virtual CString GetFileURL() const;

Valor devuelto

Dirección URL completa.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetFileURL.

GetFileURL es similar a la función miembro GetFilePath, salvo que devuelve la dirección URL con el formato file://path. Por ejemplo, al llamar a GetFileURL para obtener la dirección URL completa para myfile.txt, se devuelve la dirección URL file://c:\myhtml\myfile.txt.

Ejemplo

Vea el ejemplo de CFileFind::GetFileName.

CFileFind::GetLastAccessTime

Llame a esta función miembro para obtener la hora en la que se accedió por última vez al archivo especificado.

virtual BOOL GetLastAccessTime(CTime& refTime) const;
virtual BOOL GetLastAccessTime(FILETIME* pTimeStamp) const;

Parámetros

refTime
Referencia a un objeto CTime.

pTimeStamp
Puntero a una estructura FILETIME que contiene la hora en que se accedió por última vez al archivo.

Valor devuelto

Distinto de cero si se realiza correctamente; 0 si no. GetLastAccessTime devuelve 0 solo si nunca se ha llamado a FindNextFile en este objeto CFileFind.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetLastAccessTime.

Nota:

No todos los sistemas de archivos usan la misma semántica para implementar la marca de tiempo devuelta por esta función. Esta función puede devolver el mismo valor devuelto por otras funciones de marca de tiempo si el servidor o el sistema de archivos subyacentes no admiten mantener el atributo del tiempo. Consulte la estructura WIN32_FIND_DATA para información sobre los formatos de hora. En algunos sistemas operativos, la hora devuelta es la de la zona horaria local de la máquina donde se encuentra el archivo. Consulte la API FileTimeToLocalFileTime de Win32 para más información.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::GetLastWriteTime

Llame a esta función miembro para obtener la hora en que se cambió el archivo por última vez.

virtual BOOL GetLastWriteTime(FILETIME* pTimeStamp) const;
virtual BOOL GetLastWriteTime(CTime& refTime) const;

Parámetros

pTimeStamp
Puntero a una estructura FILETIME que contiene la hora en que se escribió por última vez en el archivo.

refTime
Referencia a un objeto CTime.

Valor devuelto

Distinto de cero si se realiza correctamente; 0 si no. GetLastWriteTime devuelve 0 solo si nunca se ha llamado a FindNextFile en este objeto CFileFind.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetLastWriteTime.

Nota:

No todos los sistemas de archivos usan la misma semántica para implementar la marca de tiempo devuelta por esta función. Esta función puede devolver el mismo valor devuelto por otras funciones de marca de tiempo si el servidor o el sistema de archivos subyacentes no admiten mantener el atributo del tiempo. Consulte la estructura WIN32_FIND_DATA para información sobre los formatos de hora. En algunos sistemas operativos, la hora devuelta es la de la zona horaria local de la máquina donde se encuentra el archivo. Consulte la API FileTimeToLocalFileTime de Win32 para más información.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::GetLength

Llame a esta función miembro para obtener la longitud del archivo encontrado, en bytes.

ULONGLONG GetLength() const;

Valor devuelto

Longitud del archivo encontrado, en bytes.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetLength.

GetLength usa la estructura WIN32_FIND_DATA de Win32 para obtener y devolver el valor del tamaño de archivo, en bytes.

Nota:

A partir de MFC 7.0, GetLength admite tipos enteros de 64 bits. El código existente previamente construido con esta versión más reciente de la biblioteca puede dar lugar a advertencias de truncamiento.

Ejemplo

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

Llame a esta función miembro para obtener la raíz del archivo encontrado.

virtual CString GetRoot() const;

Valor devuelto

Raíz de la búsqueda activa.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a GetRoot.

Esta función miembro devuelve el especificador de unidad y el nombre de ruta de acceso usados para iniciar una búsqueda. Por ejemplo, llamar a FindFile con *.dat da lugar a que GetRoot devuelva una cadena vacía. Pasar una ruta de acceso, como c:\windows\system\*.dll, a FindFile da lugar a que GetRoot devuelva c:\windows\system\.

Ejemplo

Vea el ejemplo de CFileFind::GetFileName.

CFileFind::IsArchived

Llame a esta función miembro para determinar si el archivo encontrado está archivado.

BOOL IsArchived() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Las aplicaciones marcan un archivo de archivado, del que se debe hacer copia de seguridad o se debe quitar, con FILE_ATTRIBUTE_ARCHIVE, un atributo de archivo identificado en la estructura WIN32_FIND_DATA.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsArchived.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::IsCompressed

Llame a esta función miembro para determinar si el archivo encontrado está comprimido.

BOOL IsCompressed() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Un archivo comprimido se marca con FILE_ATTRIBUTE_COMPRESSED, un atributo de archivo identificado en la estructura WIN32_FIND_DATA. Para un archivo, este atributo indica que todos los datos del archivo están comprimidos. Para un directorio, este atributo indica que la compresión es el valor predeterminado para los archivos y subdirectorios recién creados.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsCompressed.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::IsDirectory

Llame a esta función miembro para determinar si el archivo encontrado es un directorio.

BOOL IsDirectory() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Un archivo que es un directorio se marca con FILE_ATTRIBUTE_DIRECTORY, un atributo de archivo identificado en la estructura WIN32_FIND_DATA.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsDirectory.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Este pequeño programa se repite en todos los directorios de la unidad C:\ e imprime el nombre del directorio.

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

Llame a esta función miembro para probar los marcadores de directorio y directorio primario actuales mientras itera a través de los archivos.

virtual BOOL IsDots() const;

Valor devuelto

Distinto de cero si el archivo encontrado tiene el nombre "." o "..", que indica que el archivo encontrado es realmente un directorio. De lo contrario, 0.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a IsDots.

Ejemplo

Vea el ejemplo de CFileFind::IsDirectory.

CFileFind::IsHidden

Llame a esta función miembro para determinar si el archivo encontrado está oculto.

BOOL IsHidden() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Archivos ocultos, marcados con FILE_ATTRIBUTE_HIDDEN, un atributo de archivo identificado en la estructura WIN32_FIND_DATA. Un archivo oculto no se incluye en una lista de directorios normal.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsHidden.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::IsNormal

Llame a esta función miembro para determinar si el archivo encontrado es un archivo normal.

BOOL IsNormal() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Los archivos marcados con FILE_ATTRIBUTE_NORMAL, un atributo de archivo identificado en la estructura WIN32_FIND_DATA. Un archivo normal no tiene ningún otro atributo establecido. Todos los demás atributos del archivo invalidan este atributo.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsNormal.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::IsReadOnly

Llame a esta función miembro para determinar si el archivo encontrado es de solo lectura.

BOOL IsReadOnly() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Un archivo de solo lectura se marca con FILE_ATTRIBUTE_READONLY, un atributo de archivo identificado en la estructura WIN32_FIND_DATA. Las aplicaciones pueden leer un archivo de este tipo, pero no pueden escribir en él ni eliminarlo.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsReadOnly.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::IsSystem

Llame a esta función miembro para determinar si el archivo encontrado es un archivo del sistema.

BOOL IsSystem() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Un archivo del sistema se marca con FILE_ATTRIBUTE_SYSTEM, un atributo de archivo identificado en la estructura WIN32_FIND_DATA. Un archivo del sistema forma parte del sistema operativo o este lo usa de manera exclusiva.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsSystem.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::IsTemporary

Llame a esta función miembro para determinar si el archivo encontrado es un archivo temporal.

BOOL IsTemporary() const;

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Un archivo temporal se marca con FILE_ATTRIBUTE_TEMPORARY, un atributo de archivo identificado en la estructura WIN32_FIND_DATA. Un archivo temporal se usa para el almacenamiento temporal. Las aplicaciones solo deben escribir en el archivo si es absolutamente necesario. La mayoría de los datos del archivo permanecen en memoria sin vaciarse en el medio porque el archivo se eliminará pronto.

Debe llamar a FindNextFile al menos una vez antes de llamar a IsTemporary.

Consulte la función miembro MatchesMask para una lista completa de atributos de archivo.

Ejemplo

Vea el ejemplo de CFileFind::GetLength.

CFileFind::m_pTM

Un puntero a un objeto CAtlTransactionManager.

CAtlTransactionManager* m_pTM;

Comentarios

CFileFind::MatchesMask

Llame a esta función miembro para probar los atributos de archivo en el archivo encontrado.

virtual BOOL MatchesMask(DWORD dwMask) const;

Parámetros

dwMask
Especifica uno o varios atributos de archivo, identificados en la estructura WIN32_FIND_DATA, para el archivo encontrado. Para buscar varios atributos, use el operador OR (|) bit a bit. Cualquier combinación de los atributos siguientes es aceptable:

  • FILE_ATTRIBUTE_ARCHIVE El archivo es un archivo de archivado. Las aplicaciones usan este atributo para marcar los archivos para crear una copia de seguridad o quitarlos.

  • FILE_ATTRIBUTE_COMPRESSED El archivo o directorio está comprimido. Para un archivo, significa que todos los datos del archivo están comprimidos. Para un directorio, significa que la compresión es el valor predeterminado para los archivos y subdirectorios recién creados.

  • FILE_ATTRIBUTE_DIRECTORY El archivo es un directorio.

  • FILE_ATTRIBUTE_NORMAL El archivo no tiene ningún otro atributo establecido. Este atributo solo es válido si se usa por sí solo. Todos los demás atributos del archivo invalidan este atributo.

  • FILE_ATTRIBUTE_HIDDEN El archivo está oculto. No se debe incluir en una lista de directorios normal.

  • FILE_ATTRIBUTE_READONLY El archivo es de solo lectura. Las aplicaciones pueden leer el archivo, pero no pueden escribir en él ni eliminarlo.

  • FILE_ATTRIBUTE_SYSTEM El archivo forma parte del sistema operativo o este lo usa de manera exclusiva.

  • FILE_ATTRIBUTE_TEMPORARY El archivo se usa para el almacenamiento temporal. Las aplicaciones solo deben escribir en el archivo si es absolutamente necesario. La mayoría de los datos del archivo permanecen en memoria sin vaciarse en el medio porque el archivo se eliminará pronto.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero. Para obtener información de errores extendida, llame a la función GetLastError de Win32.

Comentarios

Debe llamar a FindNextFile al menos una vez antes de llamar a MatchesMask.

Ejemplo

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

Vea también

CObject (clase)
Gráfico de jerarquías
CFtpFileFind (clase)
CGopherFileFind (clase)
CInternetFile (clase)
CGopherFile (clase)
CHttpFile (clase)