共用方式為


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產生,並呼叫 GetTempFileWindows 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 類別