CFileDialog()这个函数用来打开一个打开文件的对话框
直接CFileDialog fd (TRUE)就可以,并调用fd.DoModal()就能执行
如果要对文件类型做规定,那么就要去指定fd的第5个参数
参数类型 char m_cFileType[]="ALL FILES (*.*)|*.*||";
调用DoModal会返回一个int值
他表示你在创建的文件对话框后操作的值
当为IDOK时,就是选择文件点击打开时
为IDCANCEL就是点击了取消按键
为IDOK打开后
就可以通过fd的属性来获得文件的信息
fd.GetFileName()是得到具体文件名:a.txt
fd.GetFileTitle()得到文件名 a
d.GetFileExt()文件扩展名 txt
fd.GetPathName()得到文件名的具体路径:C:\A.TXT
通过这些基本的信息就可以对文件做进一步的操作了
接下来就是对文件的读写操作
读操作很简单
利用CFile类
CFile cf(fd.GetPathName,CFile::modeRead);
指定文件,并指定为只读
如果是传输文件,并不间断的传送需要每次读时要讲他的指针指定到位置
cf.Seek(1024,CFile::current);指针为当前位置。以1024为单位,每次读1024,下一次会从1024的位置向下继续读1024个位置
char buf[1024];
UINT m_uiCount=cf.Read(buf,1024);
将1024个字节放入buf中,并且返回真正的字节数
如果m_uiCount<1024时,说明已经到文件尾了
读完后记得要关闭
cf.close();
清空缓存 cf.flush()//在读时不知道有没有用
写文件:
先要去判断文件是否存在
有很多种方式,我选择了相对简单的方式,使用CFile::GetStatus()获取指定文件的状态去判断
CFileStatus status;
if (CFile::GetStatus("aa.txt",status))//存在返回TURE,不存在返回FALSE
文件存在并继续添加的话
CFile ccf("aa.txt",CFile::modeWrite);
ccf.Seek(0,CFile::end);//将指针移动到文件尾
ccf.Write(buf,m_uiCount); //将读到的真正字节数和内容写入文件
然后去清空缓存并关闭
ccf.Flush();
ccf.Close();
如果文件并不存在,那么要先去创建文件
CFile ccf("aa.txt",CFile::modeCreate|CFile::modeWrite);
创建文件并具有写的功能