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 では、隣接する領域はマージされません。2 つのロックされた領域が隣接する場合、それぞれを個別にロック解除する必要があります。

CAtlTemporaryFile::operator ハンドル

一時ファイルへのハンドルを返します。

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 で Windows SDK 関数 GetTempFile の呼び出しを使用して生成されます。 ファイル拡張子は常に、一時ファイルを表す "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 クラス