CGopherFileFind 类

辅助 Gopher 服务器的 Internet 文件搜索。

注意

我们已弃用 CGopherConnectionCGopherFileCGopherFileFindCGopherLocator 类及其成员,因为它们在 Windows XP 平台上不起作用,但它们在早期平台上依然有效。

语法

class CGopherFileFind : public CFileFind

成员

公共构造函数

名称 描述
CGopherFileFind::CGopherFileFind 构造 CGopherFileFind 对象。

公共方法

名称 描述
CGopherFileFind::FindFile 在 gopher 服务器上查找文件。
CGopherFileFind::FindNextFile 从上一次对 FindFile 的调用继续文件搜索。
CGopherFileFind::GetCreationTime 获取指定文件的创建时间。
CGopherFileFind::GetLastAccessTime 获取上次访问指定文件的时间。
CGopherFileFind::GetLastWriteTime 获取上次写入指定文件的时间。
CGopherFileFind::GetLength 获取所找到文件的长度(以字节为单位)。
CGopherFileFind::GetLocator 获取 CGopherLocator 对象。
CGopherFileFind::GetScreenName 获取 gopher 屏幕的名称。
CGopherFileFind::IsDots 在循环访问文件时测试当前目录和父目录标记。

备注

CGopherFileFind 包括开始搜索,查找文件并返回文件 URL 的成员函数。

为 Internet 和搜索到的本地文件设计的其他 MFC 类包括 CFtpFileFindCFileFind。 这些类与 CGopherFileFind 共同为用户提供了一种无缝机制,用于查找特定文件,而无需考虑服务器协议、文件类型或位置(本地计算机或远程服务器)。请注意,没有 MFC 类用于在 HTTP 服务器上进行搜索,因为 HTTP 不支持搜索所需的直接文件操作。

注意

CGopherFileFind 不支持其基类 CFileFind 的以下成员函数:

此外,与 CGopherFileFind 一起使用时,CFileFind 成员函数 IsDots 始终为 FALSE。

有关如何使用 CGopherFileFind 和其他 WinInet 类的详细信息,请参阅使用 WinInet 进行 Internet 编程一文。

继承层次结构

CObject

CFileFind

CGopherFileFind

要求

标头:afxinet.h

CGopherFileFind::CGopherFileFind

调用此成员函数来构造 CGopherFileFind 对象。

explicit CGopherFileFind(
    CGopherConnection* pConnection,
    DWORD_PTR dwContext = 1);

参数

pConnection
指向 CGopherConnection 对象的指针。

dwContext
操作的上下文标识符。 有关 dwContext 的详细信息,请参阅“注解”

注解

MFC 将 dwContext 的默认值从创建 CGopherFileFind 对象的 CInternetSession 对象发送到 CGopherFileFind 对象。 构造 CGopherFileFind 对象时,可以重写默认值,将上下文标识符设置为所选的值。 上下文标识符将返回到 CInternetSession::OnStatusCallback,以提供标识它的对象的状态。 有关上下文标识符的详细信息,请参阅 Internet 首要步骤:WinInet 一文。

CGopherFileFind::FindFile

调用此成员函数以查找 gopher 文件。

virtual BOOL FindFile(
    CGopherLocator& refLocator,
    LPCTSTR pstrString,
    DWORD dwFlags = INTERNET_FLAG_RELOAD);

virtual BOOL FindFile(
    LPCTSTR pstrString,
    DWORD dwFlags = INTERNET_FLAG_RELOAD);

参数

refLocator
CGopherLocator 对象的引用。

pstrString
指向包含文件名的字符串的指针。

dwFlags
描述如何处理此会话的标志。 有效标志为:

  • INTERNET_FLAG_RELOAD 即使数据是本地缓存的,也可以从远程服务器中获取数据。

  • INTERNET_FLAG_DONT_CACHE 不要在本地或任何网关中缓存数据。

  • INTERNET_FLAG_SECURE 通过安全套接字层或 PCT 请求网络上的安全事务。 此标志仅适用于 HTTP 请求。

  • INTERNET_FLAG_USE_EXISTING 如果可能,为新 FindFile 请求重用与服务器的现有连接,而不是为每个请求创建一个新会话。

返回值

如果成功,则不为 0;否则为 0。 若要获得扩展的错误信息,请调用 Win32 函数 GetLastError

备注

调用 FindFile 以检索第一个 gopher 对象后,可以调用 FindNextFile 来检索后续 gopher 文件。

CGopherFileFind::FindNextFile

调用此成员函数以从对 CGopherFileFind::FindFile 的调用开始继续文件搜索。

virtual BOOL FindNextFile();

返回值

如果有更多文件,则为非零值;如果找到的文件是目录中的最后一个文件或发生错误,则为零。 若要获得扩展的错误信息,请调用 Win32 函数 GetLastError。 如果找到的文件是目录中的最后一个文件,或者找不到匹配的文件,GetLastError 函数便返回 ERROR_NO_MORE_FILES。

CGopherFileFind::GetCreationTime

获取当前文件的创建时间。

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

参数

pTimeStamp
指向包含文件创建时间的 FILETIME 结构的指针。

refTime
CTime 对象的引用。

返回值

如果成功,则为非零;如果失败,则为 0。 仅当从未在此 CGopherFileFind 对象上调用过 FindNextFile 时,GetCreationTime 才会返回 0。

备注

在调用 GetCreationTime 之前,必须至少调用一次 FindNextFile

注意

并非所有文件系统都使用相同的语义来实现此函数返回的时间戳。 如果基础文件系统或服务器不支持保留时间属性,此函数可能会返回其他时间戳函数返回的同一个值。 有关时间格式的信息,请参阅 WIN32_FIND_DATA 结构。 在某些操作系统上,返回的时间是文件所在计算机的当地时区。 有关详细信息,请参阅 Win32 FileTimeToLocalFileTime API。

CGopherFileFind::GetLastAccessTime

获取上次访问指定文件的时间。

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

参数

refTime
CTime 对象的引用。

pTimeStamp
指向包含上次访问文件的时间的 FILETIME 结构的指针。

返回值

如果成功,则为非零;如果失败,则为 0。 仅当从未在此 CGopherFileFind 对象上调用过 FindNextFile 时,GetLastAccessTime 才会返回 0。

备注

在调用 GetLastAccessTime 之前,必须至少调用一次 FindNextFile

注意

并非所有文件系统都使用相同的语义来实现此函数返回的时间戳。 如果基础文件系统或服务器不支持保留时间属性,此函数可能会返回其他时间戳函数返回的同一个值。 有关时间格式的信息,请参阅 WIN32_FIND_DATA 结构。 在某些操作系统上,返回的时间是文件所在计算机的当地时区。 有关详细信息,请参阅 Win32 FileTimeToLocalFileTime API。

CGopherFileFind::GetLastWriteTime

获取上次更改此文件的时间。

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

参数

pTimeStamp
指向包含上次写入文件的时间的 FILETIME 结构的指针。

refTime
CTime 对象的引用。

返回值

如果成功,则为非零;如果失败,则为 0。 仅当从未在此 CGopherFileFind 对象上调用过 FindNextFile 时,GetLastWriteTime 才会返回 0。

备注

在调用 GetLastWriteTime 之前,必须至少调用一次 FindNextFile

注意

并非所有文件系统都使用相同的语义来实现此函数返回的时间戳。 如果基础文件系统或服务器不支持保留时间属性,此函数可能会返回其他时间戳函数返回的同一个值。 有关时间格式的信息,请参阅 WIN32_FIND_DATA 结构。 在某些操作系统上,返回的时间是文件所在计算机的当地时区。 有关详细信息,请参阅 Win32 FileTimeToLocalFileTime API。

CGopherFileFind::GetLength

调用此成员函数以获取所找到文件的长度(以字节为单位)。

virtual ULONGLONG GetLength() const;

返回值

所找到文件的长度(以字节为单位)。

备注

GetLength 使用 Win32 结构 WIN32_FIND_DATA 获取文件大小的值(以字节为单位)。

注意

从 MFC 7.0 起,GetLength 支持 64 位整数类型。 使用这一较新版本的库生成的先前已有代码可能会导致截断警告。

示例

请参阅 CFile::GetLength 的示例(基类实现)。

CGopherFileFind::GetLocator

调用此成员函数以获取 FindFile 用于查找 gopher 文件的 CGopherLocator 对象。

CGopherLocator GetLocator() const;

返回值

CGopherLocator 对象。

CGopherFileFind::GetScreenName

调用此成员函数以获取 gopher 屏幕的名称。

CString GetScreenName() const;

返回值

gopher 屏幕的名称。

CGopherFileFind::IsDots

在循环访问文件时测试当前目录和父目录标记。

virtual BOOL IsDots() const;

返回值

如果所找到文件的名称为“.”或“..”,则为非零,表示所找到文件实际上是目录。 否则为 0。

备注

在调用 IsDots 之前,必须至少调用一次 FindNextFile

另请参阅

CFileFind 类
层次结构图
CFtpFileFind 类
CFileFind 类
CInternetFile 类
CGopherFile 类
CHttpFile 类