CFile::CFile
CFile オブジェクトを構築し、初期化します。
CFile( );
CFile(
CAtlTransactionManager* pTM
);
CFile(
HANDLE hFile
);
CFile(
LPCTSTR lpszFileName,
UINT nOpenFlags
);
CFile(
LPCTSTR lpszFileName,
UINT nOpenFlags,
CAtlTransactionManager* pTM
);
パラメーター
hFile
CFile オブジェクトにアタッチするファイルのハンドル。lpszFileName
CFile オブジェクトにアタッチするファイルの相対パスまたは完全パス。nOpenFlags
指定したファイルに対するファイル アクセス オプションのビットごとの組み合わせ (OR)。有効なオプションについては、「解説」セクションを参照してください。pTM
CAtlTransactionManager オブジェクトへのポインター。
解説
nOpenFlags パラメーターとして使用できるオプションの一覧を次の 5 つの表に示します。
次のファイル アクセス モード オプションから 1 つだけ選択します。既定のファイル アクセス モードは、読み取り専用を表す CFile::modeRead です。
値 |
説明 |
---|---|
CFile::modeRead |
読み取りアクセスだけを要求します。 |
CFile::modeWrite |
書き込みアクセスだけを要求します。 |
CFile::modeReadWrite |
読み取りおよび書き込みアクセスを要求します。 |
次の文字モード オプションの 1 つがを選択します。
値 |
説明 |
---|---|
CFile::typeBinary |
バイナリ モードを設定します (派生クラスだけで使用します)。 |
CFile::typeText |
キャリッジ リターンとライン フィードのペアに、特別な処理のテキスト モードを設定します (派生クラスだけで使用します)。 |
CFile::typeUnicode |
Unicode モードを設定します (派生クラスだけで使用します)。テキストは Unicode 形式でファイルにアプリケーションが Unicode の構成でビルド時に書き込まれます。BOM は、ファイルに書き込まれません。 |
次のファイル共有モード オプションから 1 つだけ選択します。既定のファイル共有モードは、排他アクセスを表す CFile::shareExclusive です。
値 |
説明 |
---|---|
CFile::shareDenyNone |
共有制限はありません。 |
CFile::shareDenyRead |
他のすべてのユーザーに対して読み取りアクセスを禁止します。 |
CFile::shareDenyWrite |
他のすべてのユーザーに対して書き込みアクセスを禁止します。 |
CFile::shareExclusive |
他のすべてのユーザーに対して読み取りおよび書き込みアクセスを禁止します。 |
次のファイル作成モード オプションのうち、最初のオプションまたは両方を選択します。既定の作成モードは、既存のファイルを開く CFile::modeNoTruncate です。
値 |
説明 |
---|---|
CFile::modeCreate |
ファイルが存在しない場合は、新しいファイルを作成します。ファイルが既に存在する場合は、そのファイルが CFile オブジェクトにアタッチされ、0 の長さに切り捨てられます。 |
CFile::modeNoTruncate |
ファイルが存在しない場合は、新しいファイルを作成します。ファイルが既に存在する場合は、そのファイルが CFile オブジェクトにアタッチされます。 |
説明に従って次のファイル キャッシュ オプションを選択します。既定では、オプションとしては用意されていない汎用キャッシュ スキームが使用されます。
値 |
説明 |
---|---|
CFile::osNoBuffer |
システムはファイルの中間キャッシュを使用しません。このオプションは、次の 2 つのオプションを取り消します。 |
CFile::osRandomAccess |
ファイル キャッシュはランダム アクセス用に最適化されます。このオプションと順次スキャン オプションは同時に使用しないでください。 |
CFile::osSequentialScan |
ファイル キャッシュは順次アクセス用に最適化されます。このオプションとランダム アクセス オプションは同時に使用しないでください。 |
CFile::osWriteThrough |
書き込み操作が遅延なしで実行されます。 |
ファイル ハンドルが継承されないようにするには、次のセキュリティ オプションを選択します。既定では、すべての新しい子プロセスがファイル ハンドルを使用できます。
値 |
説明 |
---|---|
CFile::modeNoInherit |
子プロセスがファイル ハンドルを使用できないようにします。 |
既定のコンストラクターでは、メンバーは初期化されますが、CFile オブジェクトへのファイルのアタッチは行われません。このコンストラクターを使用した後で、CFile::Open メソッドを使用してファイルを開き、そのファイルを CFile オブジェクトにアタッチします。
1 つのパラメーターを持つコンストラクターでは、メンバーを初期化し、既存のファイルを CFile オブジェクトにアタッチします。
2 つのパラメーターを持つコンストラクターでは、メンバーを初期化し、指定されたファイルを開こうとします。指定したファイルがこのコンストラクターで正常に開かれた場合は、ファイルが CFile オブジェクトにアタッチされます。それ以外の場合、このコンストラクターは CInvalidArgException オブジェクトへのポインターをスローします。例外の処理方法の詳細については、「例外」を参照してください。
指定したファイルが CFile オブジェクトによって正常に開かれた場合は、CFile オブジェクトが破棄されるときに、このファイルが自動的に閉じられます。それ以外の場合は、CFile オブジェクトへのアタッチが解除された後で、ファイルを明示的に閉じる必要があります。
使用例
3 つのすべてのコンストラクターの使用例を次のコードに示します。
HANDLE hFile = CreateFile(_T("CFile_File.dat"),
GENERIC_WRITE, FILE_SHARE_READ,
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
AfxMessageBox(_T("Couldn't create the file!"));
}
else
{
// Attach a CFile object to the handle we have.
CFile myFile(hFile);
static const TCHAR sz[] = _T("I love CFile!");
// write string
myFile.Write(sz, sizeof(sz));
// We can call Close() explicitly, but the destructor would have
// also closed the file for us. Note that there's no need to
// call the CloseHandle() on the handle returned by the API because
// MFC will close it for us.
myFile.Close();
必要条件
ヘッダー : afx.h