共用方式為


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。

備註

HandsOff CAtlTemporaryFile::HandsOn 可用來將檔案與物件解除關聯,並視需要重新附加它。 HandsOff 會強制將檔案緩衝區中剩餘的任何資料寫入暫存檔,然後關閉檔案。 如果您想要永久關閉和刪除檔案,或想要關閉並保留具有指定名稱的檔案內容,請使用 CAtlTemporaryFile::Close

CAtlTemporaryFile::HandsOn

呼叫此方法以開啟現有的暫存檔,並將指標放在檔案結尾。

HRESULT HandsOn() throw();

傳回值

傳回成功時S_OK,或在失敗時傳回錯誤 HRESULT。

備註

CAtlTemporaryFile::HandsOff HandsOn 可用來將檔案與物件解除關聯,並視需要重新附加它。

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