CGopherFileFind 类
辅助 Gopher 服务器的 Internet 文件搜索。
注意
我们已弃用 CGopherConnection
、CGopherFile
、CGopherFileFind
、CGopherLocator
类及其成员,因为它们在 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 类包括 CFtpFileFind 和 CFileFind。 这些类与 CGopherFileFind
共同为用户提供了一种无缝机制,用于查找特定文件,而无需考虑服务器协议、文件类型或位置(本地计算机或远程服务器)。请注意,没有 MFC 类用于在 HTTP 服务器上进行搜索,因为 HTTP 不支持搜索所需的直接文件操作。
注意
CGopherFileFind
不支持其基类 CFileFind 的以下成员函数:
此外,与 CGopherFileFind
一起使用时,CFileFind
成员函数 IsDots 始终为 FALSE。
有关如何使用 CGopherFileFind
和其他 WinInet 类的详细信息,请参阅使用 WinInet 进行 Internet 编程一文。
继承层次结构
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 类