MFC之基本的文件操作

1.我们要做的一个demo是创建文本文件并进行读写数据的操作


Cfile类是mfc中文件操作的积累,他派生自CObject,直接提供二进制文件的输入输出服务。本例将介绍如何使用CFile类进行将编辑框中的文本储存好txt文件中,并可以进行文件的读取操作。



写入文件的代码如下:

void CMFCApplication1Dlg::OnBnClickedButton1()
{
// TODO:  写入文件的代码


UpdateData(TRUE);


CString strFilter, fileName, strText;


strFilter = "Text Files(*.txt)|*.txt|";
CFileDialog dlg(FALSE, NULL, NULL, OFN_EXPLORER | OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST, strFilter);


if (dlg.DoModal() == IDOK){
fileName = dlg.GetPathName();
CFile saveFile(fileName, CFile::modeCreate | CFile::modeWrite);


saveFile.Write(m_strWrite, m_strWrite.GetLength());


saveFile.Close();


}
}


读取文件的代码如下:

void CMFCApplication1Dlg::OnBnClickedButton2()
{
// TODO:  读取文件的代码
CString strFilter, fileName, strText;


strFilter = "Text Files(*.txt)|*.txt|";


CFileDialog dlg(TRUE, NULL, NULL, OFN_EXPLORER | OFN_HIDEREADONLY | OFN_ENABLESIZING | OFN_FILEMUSTEXIST, strFilter);


if (dlg.DoModal() == IDOK){
fileName = dlg.GetPathName();
CFile openfile(fileName, CFile::modeRead);
int lenght = openfile.GetLength();
char *strTEXT;
strTEXT = new char[lenght];
openfile.Read(strTEXT, lenght);
openfile.Close();
m_strRead = strTEXT;
delete[]strTEXT;
UpdateData(FALSE);
}


}


注意:在使用CFile类的时候,要特别小心文件存取模式耳朵设置。如本例中的,保存文件,文件是可写的,如果文件存在,会将原来的文件清空。

而在打开文件的时候,不能具有mocecreate标识,否则读取文件会被清空。


2. 在文件的指定位置存放和读取数据


先给出实例的demo



保存按钮的代码如下:



void CMFCApplication2Dlg::OnBnClickedButton2()
{
// TODO:  保存


CString strFilter, fileName, strText;


strFilter = "List Files(*.list)|*.list|";
CFileDialog dlg(FALSE, NULL, NULL, OFN_EXPLORER | OFN_HIDEREADONLY |
OFN_ENABLESIZING | OFN_FILEMUSTEXIST, strFilter);


if (dlg.DoModal() == IDOK){
fileName = dlg.GetPathName();
CFile savefile(fileName, CFile::modeCreate | CFile::modeWrite);


for (int i = 0; i < m_ctllist.GetCount(); i++){
m_ctllist.GetText(i, strText);
savefile.Seek(40 * i, CFile::begin);
savefile.Write(strText, 40);


}


savefile.Close();
}
}



载入代码:



void CMFCApplication2Dlg::OnBnClickedButton3()
{
// TODO:  载入


CString strFilter, fileName;
char * strText;
strFilter = "List Files(*.list)|*.list|";
strText = new char[4

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值