共用方式為


CFtpFileFind 類別

協助 FTP 伺服器的網際網路檔案搜尋。

語法

class CFtpFileFind : public CFileFind

成員

公用建構函式

名稱 描述
CFtpFileFind::CFtpFileFind 建構 CFtpFileFind 物件。

公用方法

名稱 描述
CFtpFileFind::FindFile 在 FTP 伺服器上尋找檔案。
CFtpFileFind::FindNextFile 繼續從先前呼叫 FindFile 的檔案搜尋。
CFtpFileFind::GetFileURL 取得找到檔案的 URL,包括路徑。

備註

CFtpFileFind 包含成員函式,可開始搜尋、尋找檔案,以及傳回該檔案的URL或其他描述性資訊。

針對因特網和本機檔案搜尋而設計的其他 MFC 類別包括 CGopherFileFindCFileFind。 這些類別一 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;
}

繼承階層架構

CObject

CFileFind

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 類別