预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共19页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Vc++编程技术第六讲文档类对象的持续性及其文档视图结构的高级形式访问二进制文件2.创建一个二进制文件 为了创建一个可写的二进制文件,首先创建一个CFile类对象,然后利用Open()成员函数打开并创建一个文件对象。 CFilefile; CStringmsg; CStringsFile("Wzd.tmp"); if(!file.Open(sFile,CFile::modeCreate|CFile::modeWrite)) { msg.Format("Failedtocreate%s.",sFile); AfxMessageBox(msg); } 3.使用二进制文件 1)写二进制数据到文件中。 file.Write(buffer,sizeof(buffer)); 2)关闭文件,销毁文件对象。 file.Close(); 3)打开一个二进制文件进行读操作。 if(!file.Open(sFile,CFile::modeRead)) { msg.Format("Failedtoopen%s.",sFile); AfxMessageBox(msg); } 4)获得二进制或其他类型文件的长度。 UINTnBytes=file.GetLength(); 5)使用如下函数之一以改变文件读写的当前位置。 file.SeekToEnd(); file.Seek(20,//fileoffsetinbytes CFile::begin);//alsoCFile::endandCFile::current file.SeekToBegin()6)利用如下代码从二进制文件中读取数据,其中nBytes是实际读取的字节数。若nBytes比想要读取的字节数小或者为0,则已到文件结束处。 nBytes=file.Read(buffer,sizeof(buffer)); 7)设置文件为只读,使用CFile的静态成员函数SetStatus()。我们获取文件当前的任何状态,并加上只读状态标记。 if(CFile::GetStatus(sFile,status)) { status.m_attribute|=0x01; CFile::SetStatus(sFile,status); } 8)删除一个文件,使用CFile的另外一个静态函数Remove()。 CFile::Remove(sFile); 访问标准I/O文件步骤 1.检查一个文件是否存在 使用CFile类的GetStatus()静态函数,判断一个文本文件是否存在。 CFileStatusstatus; CStringsFile("Wzd.txt"); if(!CFile::GetStatus(sFile,status)) { msg.Format("%sdoesnotexist",sFile); AfxMessageBox(msg); } 2.创建一个文本文件 打开一个文本文件以写文本串。本例中,若所找文件无法打开,则创建一个新文件。 CStdioFilefile; if(!file.Open(sFile,CFile::modeWrite|CFile::typeText)) { if(!file.Open(sFile,CFile::modeCreate| CFile::modeWrite|CFile::typeText)) { CStringmsg; msg.Format("Failedtocreate%s.",sFile); } } 3.使用文本文件 1)写一个文本串到文件中。 file.WriteString(sRecord); 2)关闭文件并销毁创建的文件对象。 file.Close(); 3)打开一个文本文件进行读操作。 if(!file.Open(sFile,CFile::modeRead|CFile::typeText)) { msg.Format("Failedtoopen%s.",sFile); AfxMessageBox(msg); } 4)定位到文件的头和尾。 file.SeekToEnd(); file.SeekToBegin(); 5)从一个文本文件中读一个文本串。 file.ReadString(sRecord); 6)删除一个文本文件。 CFile::Remove(sFile); 访问内存文件2)判断内存文件的当前长度。 UINTnBytes=file.GetLength(); 3)使用以下方法定位下次读写的位置。 file.SeekToEnd(); file.Seek(20,//fileoffsetinbytes CFile::begin);//alsoCFile::endandCFile::current file.SeekToBegin(); 4)从内存文件中读数据