Classe CFtpFileFind
Ajuda em pesquisas de arquivos da Internet de servidores FTP.
Sintaxe
class CFtpFileFind : public CFileFind
Membros
Construtores públicos
Nome | Descrição |
---|---|
CFtpFileFind::CFtpFileFind | Constrói um objeto CFtpFileFind . |
Métodos públicos
Nome | Descrição |
---|---|
CFtpFileFind::FindFile | Localiza um arquivo em um servidor FTP. |
CFtpFileFind::FindNextFile | Continua uma pesquisa de arquivo de uma chamada anterior para FindFile. |
CFtpFileFind::GetFileURL | Obtém a URL, incluindo o caminho, do arquivo localizado. |
Comentários
CFtpFileFind
inclui as funções membro que iniciam uma pesquisa, localizam um arquivo e retornam a URL ou outras informações descritivas sobre o arquivo.
Outras classes de MFC projetadas para Internet e arquivos locais pesquisados incluem CGopherFileFind e CFileFind. Juntamente com CFtpFileFind
, essas classes fornecem um mecanismo contínuo para o cliente localizar os arquivos específicos, independentemente do protocolo do servidor ou do tipo de arquivo (um computador local ou um servidor remoto). Não há classe de MFC para pesquisa em servidores HTTP porque o HTTP não dá suporte à manipulação direta de arquivos necessária para pesquisas.
Para obter mais informações sobre como usar CFtpFileFind
e outras classes de WinInet, consulte o artigo Programação de Internet com WinInet.
Exemplo
O código a seguir demonstra como enumerar todos os arquivos no diretório atual do 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;
}
Hierarquia de herança
CFtpFileFind
Requisitos
Cabeçalho: afxinet.h
CFtpFileFind::CFtpFileFind
Essa função membro é chamada para construir um objeto CFtpFileFind
.
explicit CFtpFileFind(
CFtpConnection* pConnection,
DWORD_PTR dwContext = 1);
Parâmetros
pConnection
Um ponteiro para um objeto CFtpConnection
. É possível obter uma conexão de FTP chamando CInternetSession::GetFtpConnection.
dwContext
O identificador de contexto do objeto CFtpFileFind
. Para obter mais informações, consulte os comentários a seguir.
Comentários
O valor padrão para dwContext é enviado pelo MFC para o objeto CFtpFileFind
do objeto CInternetSession que criou o objeto CFtpFileFind
. É possível substituir o padrão para definir o identificador de contexto para um valor de sua escolha. O identificador de contexto retorna para CInternetSession::OnStatusCallback para fornecer o status do objeto com o qual é identificado. Confira o artigo Primeiras etapas da Internet: WinInet para mais informações sobre o identificador de contexto.
Exemplo
Consulte o exemplo na visão geral da classe abordado anteriormente neste tópico.
CFtpFileFind::FindFile
Chame essa função membro para localizar um arquivo FTP.
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwFlags = INTERNET_FLAG_RELOAD);
Parâmetros
pstrName
Um ponteiro para uma cadeia de caracteres contendo o nome do arquivo a ser localizado. Se for NULL, a chamada fará uma pesquisa com curinga (*).
dwFlags
Os sinalizadores que descrevem como lidar com essa sessão. Esses sinalizadores podem ser combinados com o operador OR bit a bit (|
) e são os seguintes:
INTERNET_FLAG_RELOAD
Obtém os dados de transmissão, mesmo se estiverem armazenados em cache localmente. Esse é o sinalizador padrão.INTERNET_FLAG_DONT_CACHE
Não armazena os dados em cache, localmente ou em qualquer gateway.INTERNET_FLAG_RAW_DATA
Substitui o padrão para retornar os dados brutos ( estruturas WIN32_FIND_DATA para FTP).INTERNET_FLAG_SECURE
Protege as transações na transmissão com Protocolo SSL ou PCT. Esse sinalizador é aplicável apenas para solicitações HTTP.INTERNET_FLAG_EXISTING_CONNECT
Se possível, reutilize as conexões existentes com o servidor para novas solicitaçõesFindFile
em vez de criar uma nova sessão para cada solicitação.
Valor de retorno
Diferente de zero se tiver êxito; caso contrário, 0. Para obter informações de erro estendidas, chame a função GetLastError do Win32.
Comentários
Após chamar FindFile
para recuperar o primeiro arquivo FTP, será possível chamar FindNextFile para recuperar arquivos FTP subsequentes.
Exemplo
Consulte o exemplo anterior neste tópico.
CFtpFileFind::FindNextFile
Chame essa função membro para continuar uma pesquisa de arquivo iniciada com uma chamada para a função membro FindFile.
virtual BOOL FindNextFile();
Valor de retorno
Diferente de zero se houver mais arquivos, zero se o arquivo encontrado for o último no diretório ou se ocorreu um erro. Para obter informações de erro estendidas, chame a função GetLastError do Win32. Se o arquivo encontrado for o último arquivo no diretório ou se nenhum arquivo correspondente puder ser encontrado, a função GetLastError
retornará ERROR_NO_MORE_FILES.
Comentários
Chame essa função pelo menos uma vez antes de chamar qualquer função de atributo (consulte CFileFind::FindNextFile).
FindNextFile
encapsula a função do Win32 FindNextFile.
Exemplo
Consulte a o exemplo anterior neste tópico.
CFtpFileFind::GetFileURL
Chame essa função membro para obter a URL do arquivo especificado.
CString GetFileURL() const;
Valor de retorno
O arquivo e o caminho de URL (Uniform Resource Locator).
Comentários
GetFileURL
é semelhante à função membro CFileFind::GetFilePath, exceto que fornece o resultado no formato de URL. Assim como CFileFind::GetFilePath
, o resultado não inclui o nome do arquivo. Por exemplo, file1.txt
localizado em //moose/dir/file1.txt:
retorna ftp://moose/dir/
.
Confira também
Classe CFileFind
Gráfico da hierarquia
Classe CGopherFileFind
Classe CInternetFile
Classe CGopherFile
Classe CHttpFile