CAtlTemporaryFile 类

此类提供用于创建和使用临时文件的方法。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

class CAtlTemporaryFile

成员

公共构造函数

名称 描述
CAtlTemporaryFile::CAtlTemporaryFile 构造函数。
CAtlTemporaryFile::~CAtlTemporaryFile 析构函数。

公共方法

名称 描述
CAtlTemporaryFile::Close 调用此方法可关闭临时文件并删除其内容,或将其存储在指定文件名下。
CAtlTemporaryFile::Create 调用此方法可创建临时文件。
CAtlTemporaryFile::Flush 调用此方法可将文件缓冲区中剩余的任何数据强制写入临时文件。
CAtlTemporaryFile::GetPosition 调用此方法可获取当前文件指针位置。
CAtlTemporaryFile::GetSize 调用此方法可获取临时文件的大小(以字节为单位)。
CAtlTemporaryFile::HandsOff 调用此方法可取消关联 CAtlTemporaryFile 对象中的文件。
CAtlTemporaryFile::HandsOn 调用此方法可打开现有临时文件并将指针置于文件末尾。
CAtlTemporaryFile::LockRange 调用此方法可锁定文件中的某个区域,以防止其他进程访问它。
CAtlTemporaryFile::Read 调用此方法可从文件指针指示的位置开始读取临时文件中的数据。
CAtlTemporaryFile::Seek 调用此方法可移动临时文件的文件指针。
CAtlTemporaryFile::SetSize 调用此方法可设置临时文件的大小。
CAtlTemporaryFile::TempFileName 调用此方法可返回临时文件的名称。
CAtlTemporaryFile::UnlockRange 调用此方法可解锁临时文件的某个区域。
CAtlTemporaryFile::Write 调用此方法可从文件指针指示的位置开始将数据写入临时文件中。

公共运算符

“属性” 描述
CAtlTemporaryFile::operator HANDLE 返回临时文件的句柄。

备注

CAtlTemporaryFile 可用于轻松地创建和使用临时文件。 该文件会自动命名、打开、关闭和删除。 如果在文件关闭后需要文件内容,则可以将其保存到具有指定名称的新文件中。

要求

头文件:atlfile.h

示例

请参阅 CAtlTemporaryFile::CAtlTemporaryFile 的示例。

CAtlTemporaryFile::CAtlTemporaryFile

构造函数。

CAtlTemporaryFile() throw();

备注

在对 CAtlTemporaryFile::Create 进行调用之前,实际上不会打开文件。

示例

// Declare the temporary file object
CAtlTemporaryFile myTempFile;

// Create the temporary file, without caring where it
// will be created, but with both read and write access.
ATLVERIFY (myTempFile.Create(NULL, GENERIC_READ|GENERIC_WRITE) == S_OK);

// Create some data to write to the file

int nBuffer[100];
DWORD bytes_written = 0, bytes_read = 0;
int i;

for (i = 0; i < 100; i++)
   nBuffer[i] = i;

// Write some data to the file
myTempFile.Write(&nBuffer, sizeof(nBuffer), &bytes_written);

// Confirm it was written ok
ATLASSERT(bytes_written == sizeof(nBuffer));

// Flush the data to disk
ATLVERIFY(myTempFile.Flush() == S_OK);

// Reset the file pointer to the beginning of the file
ATLVERIFY(myTempFile.Seek(0, FILE_BEGIN) == S_OK);

// Read in the data
myTempFile.Read(&nBuffer, sizeof(nBuffer), bytes_read);

// Confirm it was read ok
ATLASSERT(bytes_read == sizeof(nBuffer));

// Close the file, making a copy of it at another location
ATLVERIFY(myTempFile.Close(_T("c:\\temp\\mydata.tmp")) == S_OK);

CAtlTemporaryFile::~CAtlTemporaryFile

析构函数。

~CAtlTemporaryFile() throw();

备注

析构函数调用 CAtlTemporaryFile::Close

CAtlTemporaryFile::Close

调用此方法可关闭临时文件并删除其内容,或将其存储在指定文件名下。

HRESULT Close(LPCTSTR szNewName = NULL) throw();

参数

szNewName
要在其中存储临时文件内容的新文件的名称。 如果此参数为 NULL,则会删除临时文件的内容。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

示例

请参阅 CAtlTemporaryFile::CAtlTemporaryFile 的示例。

CAtlTemporaryFile::Create

调用此方法可创建临时文件。

HRESULT Create(LPCTSTR pszDir = NULL, DWORD dwDesiredAccess = GENERIC_WRITE) throw();

参数

pszDir
临时文件的路径。 如果此项为 NULL,则调用 GetTempPath 以分配路径。

dwDesiredAccess
所需访问权限。 请参阅 Windows SDK 的 CreateFile 中的 dwDesiredAccess

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

示例

请参阅 CAtlTemporaryFile::CAtlTemporaryFile 的示例。

CAtlTemporaryFile::Flush

调用此方法可将文件缓冲区中剩余的任何数据强制写入临时文件。

HRESULT Flush() throw();

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

类似于 CAtlTemporaryFile::HandsOff,但文件未关闭。

示例

请参阅 CAtlTemporaryFile::CAtlTemporaryFile 的示例。

CAtlTemporaryFile::GetPosition

调用此方法可获取当前文件指针位置。

HRESULT GetPosition(ULONGLONG& nPos) const throw();

参数

nPos
位置(以字节表示)。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

若要更改文件指针位置,请使用 CAtlTemporaryFile::Seek

CAtlTemporaryFile::GetSize

调用此方法可获取临时文件的大小(以字节为单位)。

HRESULT GetSize(ULONGLONG& nLen) const throw();

参数

nLen
文件中的字节数。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

CAtlTemporaryFile::HandsOff

调用此方法可取消关联 CAtlTemporaryFile 对象中的文件。

HRESULT HandsOff() throw();

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

HandsOffCAtlTemporaryFile::HandsOn 用于取消关联对象的文件,并在需要的情况下重新附加该文件。 HandsOff 会将文件缓冲区中剩余的任何数据强制写入临时文件,然后关闭该文件。 如果要永久关闭和删除文件,或者要关闭具有给定名称的文件并保留其内容,请使用 CAtlTemporaryFile::Close

CAtlTemporaryFile::HandsOn

调用此方法可打开现有临时文件并将指针置于文件末尾。

HRESULT HandsOn() throw();

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

CAtlTemporaryFile::HandsOffHandsOn 用于取消关联对象的文件,并在需要的情况下重新附加该文件。

CAtlTemporaryFile::LockRange

调用此方法可锁定临时文件中的某个区域,以防止其他进程访问它。

HRESULT LockRange(ULONGLONG nPos, ULONGLONG nCount) throw();

参数

nPos
文件中应开始进行锁定的位置。

nCount
要锁定的字节范围的长度。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

锁定文件中的字节将阻止其他进程访问这些字节。 可以锁定文件的多个区域,但不允许使用重叠区域。 若要成功解锁区域,请使用 CAtlTemporaryFile::UnlockRange,确保字节范围与之前锁定的区域完全对应。 LockRange 不会合并相邻区域;如果有两个相邻的锁定区域,则必须单独解锁每个区域。

CAtlTemporaryFile::operator HANDLE

返回临时文件的句柄。

operator HANDLE() throw();

CAtlTemporaryFile::Read

调用此方法可从文件指针指示的位置开始读取临时文件中的数据。

HRESULT Read(
    LPVOID pBuffer,
    DWORD nBufSize,
    DWORD& nBytesRead) throw();

参数

pBuffer
指向缓冲区的指针,该缓冲区将接收从文件读取的数据。

nBufSize
缓冲区大小(以字节为单位)。

nBytesRead
读取的字节数。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

调用 CAtlFile::Read。 若要更改文件指针的位置,请调用 CAtlTemporaryFile::Seek

示例

请参阅 CAtlTemporaryFile::CAtlTemporaryFile 的示例。

CAtlTemporaryFile::Seek

调用此方法可移动临时文件的文件指针。

HRESULT Seek(LONGLONG nOffset, DWORD dwFrom = FILE_CURRENT) throw();

参数

nOffset
从 dwFrom 提供的起点算起的偏移量(以字节为单位)。

dwFrom
起点(FILE_BEGIN、FILE_CURRENT 或 FILE_END)。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

调用 CAtlFile::Seek。 若要获取当前文件指针位置,请调用 CAtlTemporaryFile::GetPosition

示例

请参阅 CAtlTemporaryFile::CAtlTemporaryFile 的示例。

CAtlTemporaryFile::SetSize

调用此方法可设置临时文件的大小。

HRESULT SetSize(ULONGLONG nNewLen) throw();

参数

nNewLen
文件的新长度(以字节为单位)。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

调用 CAtlFile::SetSize。 返回时,文件指针位于文件末尾。

CAtlTemporaryFile::TempFileName

调用此方法可返回临时文件的名称。

LPCTSTR TempFileName() throw();

返回值

返回指向文件名的 LPCTSTR。

注解

文件名在 CAtlTemporaryFile::CAtlTemporaryFile 中通过调用 GetTempFile Windows SDK 函数生成。 临时文件的文件扩展名将始终为“TFR”。

CAtlTemporaryFile::UnlockRange

调用此方法可解锁临时文件的某个区域。

HRESULT UnlockRange(ULONGLONG nPos, ULONGLONG nCount) throw();

参数

nPos
文件中应开始进行解锁的位置。

nCount
要解锁的字节范围的长度。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

调用 CAtlFile::UnlockRange

CAtlTemporaryFile::Write

调用此方法可从文件指针指示的位置开始将数据写入临时文件中。

HRESULT Write(
    LPCVOID pBuffer,
    DWORD nBufSize,
    DWORD* pnBytesWritten = NULL) throw();

参数

pBuffer
缓冲区,其中包含要写入到文件中的数据。

nBufSize
要从缓冲区传输的字节数。

pnBytesWritten
写入的字节数。

返回值

如果成功,则返回 S_OK;否则返回错误 HRESULT。

注解

调用 CAtlFile::Write

示例

请参阅 CAtlTemporaryFile::CAtlTemporaryFile 的示例。

另请参阅

类概述
CAtlFile 类