次の方法で共有


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

参照

関連項目

CFile クラス

階層図