CFtpFileFind (clase)
Ayuda en las búsquedas del archivo de Internet de servidores FTP.
Sintaxis
class CFtpFileFind : public CFileFind
Miembros
Constructores públicos
Nombre | Descripción |
---|---|
CFtpFileFind::CFtpFileFind | Construye un objeto CFtpFileFind . |
Métodos públicos
Nombre | Descripción |
---|---|
CFtpFileFind::FindFile | Busca un archivo en un servidor FTP. |
CFtpFileFind::FindNextFile | Continúa una búsqueda de archivos desde una llamada anterior a FindFile. |
CFtpFileFind::GetFileURL | Obtiene la dirección URL, incluida la ruta de acceso, del archivo encontrado. |
Comentarios
CFtpFileFind
incluye funciones miembro que inician una búsqueda, localizan un archivo y devuelven la dirección URL u otra información descriptiva sobre el archivo.
Otras clases MFC diseñadas para Internet y el archivo local buscado incluyen CGopherFileFind y CFileFind. Junto con CFtpFileFind
, estas clases proporcionan un mecanismo sin problemas para que el cliente encuentre archivos específicos, independientemente del protocolo de servidor o del tipo de archivo (ya sea una máquina local o un servidor remoto). No hay ninguna clase MFC para buscar en servidores HTTP porque HTTP no admite la manipulación directa de archivos necesaria para las búsquedas.
Para más información sobre cómo usar CFtpFileFind
y las otras clases de WinInet, consulte el artículo Programación de Internet con WinInet.
Ejemplo
En el código siguiente se muestra cómo enumerar todos los archivos del directorio actual del servidor FTP.
// create a session object to initialize WININET library
// Default parameters mean the access method in the registry
// (that is, set by the "Internet" icon in the Control Panel)
// will be used.
CInternetSession sess(_T("My FTP Session"));
CFtpConnection *pConnect = NULL;
try
{
// Request a connection to ftp.microsoft.com. Default
// parameters mean that we'll try with username = ANONYMOUS
// and password set to the machine name @ domain name
pConnect = sess.GetFtpConnection(_T("ftp.microsoft.com"));
// use a file find object to enumerate files
CFtpFileFind finder(pConnect);
// start looping
BOOL bWorking = finder.FindFile(_T("*"));
while (bWorking)
{
bWorking = finder.FindNextFile();
_tprintf_s(_T("%s\n"), (LPCTSTR)finder.GetFileURL());
}
}
catch (CInternetException *pEx)
{
TCHAR sz[1024];
pEx->GetErrorMessage(sz, 1024);
_tprintf_s(_T("ERROR! %s\n"), sz);
pEx->Delete();
}
// if the connection is open, close it
if (pConnect != NULL)
{
pConnect->Close();
delete pConnect;
}
Jerarquía de herencia
CFtpFileFind
Requisitos
Encabezado: afxinet.h
CFtpFileFind::CFtpFileFind
Se llama a esta función miembro para construir un objeto CFtpFileFind
.
explicit CFtpFileFind(
CFtpConnection* pConnection,
DWORD_PTR dwContext = 1);
Parámetros
pConnection
Puntero a un objeto CFtpConnection
. Para obtener una conexión FTP, llame a CInternetSession::GetFtpConnection.
dwContext
Identificador de contexto del objeto CFtpFileFind
. Para más información, consulte la sección Comentarios que se muestra más adelante.
Comentarios
MFC envía el valor predeterminado de dwContext al objeto CFtpFileFind
desde el objeto CInternetSession que creó el objeto CFtpFileFind
. Reemplace el valor predeterminado para establecer el identificador de contexto en un valor que desee. El identificador de contexto se devuelve a CInternetSession::OnStatusCallback para proporcionar el estado del objeto con el que se identifica. Vea el artículo Internet First Steps: WinInet para obtener más información sobre el identificador de contexto.
Ejemplo
Consulte el ejemplo de la información general de la clase anteriormente en este tema.
CFtpFileFind::FindFile
Llame a esta función miembro para buscar un archivo FTP.
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwFlags = INTERNET_FLAG_RELOAD);
Parámetros
pstrName
Puntero a una cadena que contiene el nombre del archivo que se va a buscar. Si es NULL, la llamada realizará una búsqueda con caracteres comodín (*).
dwFlags
Marcas que describen cómo controlar esta sesión. Estas marcas se pueden combinar con el operador OR bit a bit (|
) y son las siguientes:
INTERNET_FLAG_RELOAD
Obtener los datos de la conexión incluso si está almacenado localmente en caché. Esta es la marca predeterminada.INTERNET_FLAG_DONT_CACHE
No almacene en caché los datos, ya sea localmente o en ninguna puerta de enlace.INTERNET_FLAG_RAW_DATA
Invalide el valor predeterminado para devolver los datos sin procesar (estructuras WIN32_FIND_DATA para FTP).INTERNET_FLAG_SECURE
Protege las transacciones en la conexión con capa de sockets seguros o PCT. Esta marca solo se aplica a las solicitudes HTTP.INTERNET_FLAG_EXISTING_CONNECT
Si es posible, vuelva a usar las conexiones existentes al servidor para las nuevas solicitudesFindFile
en lugar de crear una nueva sesión para cada solicitud.
Valor devuelto
Si es correcta, su valor es distinto de cero. En caso contrario, es cero. Para más información de los errores, llame a la función Win32 GetLastError.
Comentarios
Después de llamar a FindFile
para recuperar el primer archivo FTP, puede llamar a FindNextFile para recuperar los archivos FTP posteriores.
Ejemplo
Consulte el ejemplo anterior en este tema.
CFtpFileFind::FindNextFile
Llame a esta función miembro para continuar una búsqueda de archivos iniciada con una llamada a la función miembro 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 más información de los errores, llame a la función Win32 GetLastError. 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 esta función al menos una vez antes de llamar a cualquier función de atributo (consulte CFileFind::FindNextFile).
FindNextFile
ajusta la función de Win32 FindNextFile.
Ejemplo
Consulte el ejemplo que se muestra más adelante en este tema.
CFtpFileFind::GetFileURL
Llame a esta función miembro para obtener la dirección URL del archivo especificado.
CString GetFileURL() const;
Valor devuelto
Archivo y ruta de acceso del localizador de recursos universales (URL).
Comentarios
GetFileURL
es similar a la función miembro CFileFind::GetFilePath, salvo que proporciona el resultado en formato de dirección URL. Al igual que con CFileFind::GetFilePath
, el resultado no incluye el nombre de archivo. Por ejemplo, file1.txt
ubicado en //moose/dir/file1.txt:
devuelve ftp://moose/dir/
.
Consulte también
CFileFind (clase)
Gráfico de jerarquías
CGopherFileFind (clase)
CInternetFile (clase)
CGopherFile (clase)
CHttpFile (clase)