用CStdioFile写文件

参考:http://blog.sina.com.cn/s/blog_7df411ff01010qim.html


void CTestWriteFileDlg::OnBnClickedOk()
{
	// TODO: 在此添加控件通知处理程序代码
	TCHAR szPath[100];
	memset(szPath, 0, sizeof(szPath));
	GetModuleFileName(NULL, szPath, 100);

	CString strPath = szPath;

	strPath = strPath.Left(strPath.ReverseFind(_T('\\')));
	strPath = strPath  + _T("\\info.txt");

	CStdioFile myFile;
	CFileException fileException;
	if (myFile.Open(strPath, CFile::typeText | CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate, &fileException))
	{
		myFile.SeekToEnd();
		myFile.WriteString(_T("FirstLine\n"));
		myFile.WriteString(_T("SecondLine\n"));
	}
	else
	{
		CString strInfo;
		strInfo.Format(_T("Cannot Open File %s, Error%u\n"), strPath, fileException.m_cause);
		MessageBox(strInfo);
	}
//	CDialogEx::OnOK();
}

附:

nOpenFlags共享和访问模式,指定当打开文件时进行的动作,可以将以下所列用OR(|)操作符联起来。至少应有一个访问权限和一个共享选项,modeCreate和modeNoInherit是可选的。值如下所示:
·CFile::modeCreate调用构造函数构造一个新文件,如果文件已存在,则长度变成0。
·CFile::modeNoTruncate此值与modeCreate组合使用。如果所创建的文件已存在则其长度不变为0。因而此文件被打开,或者作为一个新文件或者作为一个已存在的文件。这将是很有用的,例如当打开一个可能存在也可能不存在的文件时。这个选项也可用于CStdioFile.
·CFile::modeRead打开文件仅供读。
·CFile::modeReadWrite打开文件供读写。
·CFile::modeWrite打开文件仅供写。
·CFile::modeNoInherit阻止文件被子进程继承。
·CFile::ShareDenyNone不禁止其它进程读或写访问,打开文件。如果文件已被其它进程以兼容模式打开,则Create失败。
·CFile::ShareDenyRead打开文件,禁止其它进程读此文件。如果文件已被其它进程以兼容模式打开,或被其它进程读,则Create失败。
·CFile::ShareDenyWrite打开文件,禁止其它进程写此文件。如果文件已被其它进程以兼容模式打开,或被其它进程写,则Create失败。
·CFile::ShareExclusive以独占模式打开文件,禁止其它进程对文件的读写。如果文件已经以其它模式打开读写(即使被当前进程),则构造失败。
·CFile::ShareCompat此标志在32位MFC中无效。此标志在使用CFile::Open时映射为CFile::ShareExclusive。
·CFile::typeText对回车换行设置特殊进程(仅用于派生类)。
·CFile::typeBinary设置二进制模式(仅用于派生类)。 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值