文件读写操作-read.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件读写操作-read

文件读写操作 上一讲我们学习了事件和事件处理函数的有关知识,并为Mp3Collect程序添加的进行记录操作的代码,但是程序还缺少保存记录的功能,以至于当程序退出之后,我们辛苦输入的记录就丢失了,因此在本讲中,我们就首先来学习有关文件读写操作的知识,然后继续添加事件处理函数,实现查询记录的功能。 在应用程序中保存信息和数据的常用方法有三种:第一种是保存在Windows的注册表中,第二种是保存在程序专用的文件中,第三种则是保存在数据库中。第一种方法只适合于保存少量关键的信息,例如程序的参数和选项,对于我们的例子程序来说,歌曲记录的数量可以是非常多的,因此不适合保存在注册表中。第二种方法是最常用的,也比较容易实现,因此现在我们先采用第二种方法来保存记录。第三种方法对于保存大量结构化的数据是最有效的,例如Mp3Collect的歌曲记录,但实现起来相对要复杂得多,在讲座的后面我们再来学习数据库操作方法。 用于文件操作的函数也有很多种,我们选择使用I/O流函数和FILE *指针来进行对文件的操作,因为这些函数符合ANSI C/C++规范,可移植性较好,能够用于Win32、Unix平台,是比较常用的文件操作方式。I/O流函数和FILE结构的声明和定义位于头文件stdio.h中。 保存记录文件 下面介绍如何保存文件记录。 首先,为主窗体类添加一个SaveFile()成员函数。在类浏览器中找到TMainForm类,用右键单击该类,在关联菜单中选择New Method命令,就会弹出如图10-1所示的Add Method对话框。在其中的Method Name中输入新的成员函数名SaveFile,函数的参数(Arguments)为空,返回类型为void,即没有返回值。函数的访问权限为私有的(Private),函数的调用方式为__fastcall,这是因为按照CBuilder的规定,所有窗体类的成员函数的调用方式都必须为__fastcall方式。设置好这些函数属性后,按下“OK”按钮,CBuilder就会自动添加好SaveFile()函数的框架。 接下来在SaveFile()函数中添加代码,实现保存文件的功能。我们约定保存记录的文件名为Mp3Collect.sav,文件目录为当前工作目录,当前工作目录是通过调用GetCurrentDir()函数获得的。文件的格式为普通的文本文件,每个列表项的内容以字符串的方式写入文件中,其中每个字符串为单独的一行,因此每个列表项在文件中占三行。在对文件进行I/O流操作之前,首先需要打开文件,并获取文件的FILE*指针。 我们通过fopen()函数以文本以及创建新文件的方式打开Mp3Collect.sav文件,然后读取ListView1中的列表项,利用函数fprintf()将每个列表项的内容写入文件中。下面SaveFile()函数的实现代码: void __fastcall TMainForm::SaveButtonClick(TObject *Sender) { FILE * fp; //获取当前工作目录,并构造含路径的文件全名。其中,文件名与路径用斜线\分开, //在CBuilder中用双引号构造字符串时,连续两个斜线表示实际字符串中的一个斜线。 AnsiString sFilePath =GetCurrentDir()+AnsiString(\\Mp3Collect.sav); //fopen函数的第一个参数表示文件名。第二个参数为打开文件的方式,其中w表示以创建 //文件打开,t表示以文本方式打开。 fp=fopen(sFilePath.c_str(),wt); //fopen返回文件指针,如果为无效的指针,则显示出错信息并返回 if(fp==NULL){ ShowMessage(不能打开文件Mp3Collect.sav,请检查是否为共享冲突); return; } int i; TListItem * theItem; //循环遍历列表框ListView1的所有列表项 for(i=0;iListView1-Items-Count;i++){ //通过ListView1的Items属性获得它的第i个列表项 theItem=ListView1-Items-Item[i]; //将列表项中的记录信息分别写入文件中,每个字符串后插入回车换行字符。 fprintf(fp,%s\n\r%s\n\r%s\n\r,theItem-Caption, theItem-SubItems-Strings[0],theItem-SubItems-Strings[1]); } //关闭文件 fclose(fp); } SaveFile()功能实现后,还要在合适的地方调用该函数,以真正实现保存记录的功能了。由于每次添加、删除、修改记录项

文档评论(0)

zhuwo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档