MFCの基礎 - ファイル

提供:MochiuWiki : SUSE, EC, PCB
2019年8月18日 (日) 15:51時点における192.168.1.23による版 (ページの作成:「== ファイルを開く == <source lang="c++"> CFile File; if(File.Open(_T("test.txt"), CFile::modeCreate| CFile::modeNoTruncate | CFile::modeWrite | CFile::typeText)…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

ファイルを開く

 CFile File;
 if(File.Open(_T("test.txt"), CFile::modeCreate| CFile::modeNoTruncate | CFile::modeWrite | CFile::typeText))
 {
    // To do something
 }
 
 file.Close();

第1引数はファイル名、第2引数はファイルモードを指定する。
主なモードを以下に記載する。
CFile::modeCreate ファイルを新規に作成する。既にファイルがある場合も削除して新規に作成する。
CFile::modeNoTruncate modeCreateと組み合わせて使用すると既にファイルがある場合は新規作成せずに開く。
CFile::modeRead ファイルを読み取り専用で開く。
CFile::modeReadWrite ファイルを読み書き可能で開く。
CFile::modeWrite ファイルを書き込み専用で開く。
CFile::shareDenyNone 他プロセスからも読み書きできる状態でファイルを開く。
CFile::shareExclusive ファイルを排他モードで開く。
CFile::typeText テキストモードを設定する。派生クラスで使う。
CFile::typeBinary バイナリモードを設定する。派生クラスで使う。


1行ずつ読み込む

 CStdioFile File(_T("test.dat"), CFile::modeCreate| CFile::modeNoTruncate | CFile::modeRead | CFile::typeText);
 CString strReadLine = _T("");
 while(File.ReadString(strReadLine))
 {
    TRACE(strReadLine + _T("\n"));
 }



ファイルに書き込む

 CStdioFile File(_T("test.dat"), CFile::modeCreate| CFile::modeNoTruncate | CFile::modeWrite | CFile::typeText);
 CString strWriteLine1 = _T("hoge\n");
 File.WriteString(strWriteLine1);
 
 CString strWriteLine2 = _T("piyo\n");
 File.WriteString(strWriteLine2);
 
 File.Close();



ファイルに追記する

CFileおよびCStdioFileには追記モードが存在しないので、ファイルを開いた後、書き込み位置を指定する必要がある。 下記のサンプルコードでは、ファイルを書き込みモードで開いた後、SeekToEndメソッドで書き込み位置を最後尾に移動する。

 CStdioFile File(_T("test.dat"), CFile::modeCreate| CFile::modeNoTruncate | CFile::modeWrite | CFile::typeText);
 File.SeekToEnd();        // 書き込み位置を最後尾に移動
 
 CString strWriteLine1 = _T("hoge\n");
 File.WriteString(strWriteLine1);  // Write a line
 
 CString strWriteLine2 = _T("piyo\n");
 File.WriteString(strWriteLine2);  // Write a line
 
 File.Close();