CFtpFileFind 類別
協助 FTP 伺服器的網際網路檔案搜尋。
語法
class CFtpFileFind : public CFileFind
成員
公用建構函式
名稱 | 描述 |
---|---|
CFtpFileFind::CFtpFileFind | 建構 CFtpFileFind 物件。 |
公用方法
名稱 | 描述 |
---|---|
CFtpFileFind::FindFile | 在 FTP 伺服器上尋找檔案。 |
CFtpFileFind::FindNextFile | 繼續從先前呼叫 FindFile 的檔案搜尋。 |
CFtpFileFind::GetFileURL | 取得找到檔案的 URL,包括路徑。 |
備註
CFtpFileFind
包含成員函式,可開始搜尋、尋找檔案,以及傳回該檔案的URL或其他描述性資訊。
針對因特網和本機檔案搜尋而設計的其他 MFC 類別包括 CGopherFileFind 和 CFileFind。 這些類別一 CFtpFileFind
起提供無縫機制,讓客戶端尋找特定檔案,而不論伺服器通訊協定或檔類型為何(本機計算機或遠端伺服器)。 HTTP 伺服器上沒有用於搜尋的 MFC 類別,因為 HTTP 不支援搜尋所需的直接檔案操作。
如需如何使用 CFtpFileFind
和其他 WinInet 類別的詳細資訊,請參閱使用 WinInet 進行因特網程式設計一文。
範例
下列程式代碼示範如何列舉 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;
}
繼承階層架構
CFtpFileFind
需求
標頭: afxinet.h
CFtpFileFind::CFtpFileFind
呼叫這個成員函式來建構 CFtpFileFind
物件。
explicit CFtpFileFind(
CFtpConnection* pConnection,
DWORD_PTR dwContext = 1);
參數
pConnection
CFtpConnection
物件的指標。 您可以呼叫 CInternetSession::GetFtpConnection 來取得 FTP 連線。
dwContext
對象的內容識別碼 CFtpFileFind
。 如需詳細資訊,請參閱下列 備註。
備註
dwContext 的預設值是由 MFC 從建立CFtpFileFind
物件的 CInternetSession 物件傳送至 CFtpFileFind
物件。 您可以覆寫預設值,將內容識別碼設定為您選擇的值。 內容標識符會傳回至 CInternetSession::OnStatusCallback ,以提供識別物件的狀態。 如需內容標識碼的詳細資訊,請參閱因特網第一個步驟:WinInet 一文。
範例
請參閱本主題稍早類別概觀中的範例。
CFtpFileFind::FindFile
呼叫此成員函式以尋找 FTP 檔案。
virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwFlags = INTERNET_FLAG_RELOAD);
參數
pstrName
字串的指標,其中包含要尋找的檔名。 如果為 NULL,呼叫將會執行通配符搜尋 。。
dwFlags
描述如何處理此會話的旗標。 這些旗標可以與位 OR 運算子 (|
) 結合,如下所示:
INTERNET_FLAG_RELOAD
即使是本機快取,也會從網路取得資料。 這是預設旗標。INTERNET_FLAG_DONT_CACHE
不要在本機或任何閘道中快取資料。INTERNET_FLAG_RAW_DATA
覆寫預設值以傳回原始數據( WIN32_FIND_DATA FTP 的結構)。INTERNET_FLAG_SECURE
使用安全套接字層或PCT保護連線上的交易。 此旗標僅適用於 HTTP 要求。INTERNET_FLAG_EXISTING_CONNECT
可能的話,請針對新FindFile
要求重複使用伺服器的現有連線,而不是為每個要求建立新的工作階段。
傳回值
如果成功則為非零;否則為 0。 若要取得擴充的錯誤資訊,請呼叫 Win32 函式 GetLastError。
備註
呼叫 FindFile
以擷取第一個 FTP 檔案之後,您可以呼叫 FindNextFile 來擷取後續的 FTP 檔案。
範例
請參閱本主題中的先前範例。
CFtpFileFind::FindNextFile
呼叫此成員函式,以繼續以呼叫 FindFile 成員函式開始的檔案搜尋。
virtual BOOL FindNextFile();
傳回值
如果有更多檔案,則為非零;如果找到的檔案是目錄中的最後一個檔案,或發生錯誤,則為零。 若要取得擴充的錯誤資訊,請呼叫 Win32 函式 GetLastError。 如果找到的檔案是目錄中的最後一個檔案,或者找不到相符的檔案,函 GetLastError
式會傳回ERROR_NO_MORE_FILES。
備註
您至少必須在呼叫任何屬性函式之前呼叫此函式一次(請參閱 CFileFind::FindNextFile)。
FindNextFile
包裝 Win32 函式 FindNextFile。
範例
請參閱本主題稍早的範例。
CFtpFileFind::GetFileURL
呼叫這個成員函式以取得指定檔案的URL。
CString GetFileURL() const;
傳回值
通用資源定位器 (URL) 的檔案和路徑。
備註
GetFileURL
類似於成員函式 CFileFind::GetFilePath ,不同之處在於它會以 URL 格式提供結果。 與相同 CFileFind::GetFilePath
,結果不包含檔名。 例如, file1.txt
位於中的 //moose/dir/file1.txt:
會傳 ftp://moose/dir/
回 。
另請參閱
CFileFind 類別
階層架構圖表
CGopherFileFind 類別
CInternetFile 類別
CGopherFile 類別
CHttpFile 類別