为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

文件读取总结

2012-03-30 10页 doc 58KB 54阅读

用户头像

is_368455

暂无简介

举报
文件读取总结C/C++文件读写操作总结 (2009-09-12 12:23:43) HYPERLINK "javascript:;" INCLUDEPICTURE "http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" \* MERGEFORMATINET 转载 标签: c 读写 linux unix file stream it 分类: C++编程 C/C++文件读写操作总结   在编程的过程中,文件的操作是一个经常用到的问题,在C++B...
文件读取总结
C/C++文件读写操作总结 (2009-09-12 12:23:43) HYPERLINK "javascript:;" INCLUDEPICTURE "http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" \* MERGEFORMATINET 转载 标签: c 读写 linux unix file stream it 分类: C++编程 C/C++文件读写操作总结   在编程的过程中,文件的操作是一个经常用到的问题,在C++Builder中,可以使用多种方法对文件操作:     1、基于C++的文件操作;     2、基于C的文件操作; 基于C++的文件操作    在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O stream这个类有两个重要的运算符:     1、插入器(<<)     向流输出数据。比如说系统有一个默认的输出流(cout),一般情况下就是指的显示器,所     以,cout<<"Write Stdout"<<''\n'';就示把字符串"Write Stdout"和换行字符(''\n'')输出到标准     输出流。     2、析取器(>>)     从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所     以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。     在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式     操作文件,就必须加入头文件fstream.h。下面就把此类的文件操作过程一一道来。   一、打开文件    在fstream类中,有一个成员函数open(),就是用来打开文件的,其原型是:     void open(const char* filename, int mode, int access);     参数:       filename:  要打开的文件名       mode:    要打开文件的方式       access:   打开文件的属性     打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下:       ios::app:   以追加的方式打开文件       ios::ate:   文件打开后定位到文件尾,ios:app就包含有此属性       ios::binary:  以二进制方式打开文件,缺省的方式是文本方式。两种方式的区别见前文       ios::in:    文件以输入方式打开       ios::out:   文件以输出方式打开       ios::nocreate: 不建立文件,所以文件不存在时打开失败        ios::noreplace:不覆盖文件,所以打开文件时如果文件存在失败       ios::trunc:  如果文件存在,把文件长度设为0       可以用“或”把以上属性连接起来,如ios::out|ios::binary       打开文件的属性取值是:           0:普通文件,打开访问           1:只读文件           2:隐含文件           4:系统文件       可以用“或”或者“+”把以上属性连接起来 ,如3或1|2就是以只读和隐含属性打开文件。      例如:以二进制输入方式打开文件config.conf      fstream file1;        file1.open("config.conf",ios::binary|ios::in,0);        如果open函数只有文件名一个参数,则是以读/写普通文件打开,即:      file1.open("config.conf"); <=> file1.open("config.conf",ios::in|ios::out,0);        另外,fstream还有和open()一样的构造函数,对于上例,在定义的时侯就可以打开文件了:      fstream file1("config.conf");        特别提出的是,fstream有两个子类:ifstream(input file stream)和       ofstream(outpu file stream)        ifstream file2("pdos.def");//以输入方式打开文件        ofstream file3("x.123");//以输出方式打开文件           ifstream默认以输入方式io::in打开文件,而ofstream默认以输出io::out方式打开文件。           注:file2.good() 判断对象可不可用。正常返回0,否则返回非0.     所以,在实际应用中,根据需要的不同,选择不同的类来定义:       如果想以输入方式打开,就用ifstream来定义;输入文件流       如果想以输出方式打开,就用ofstream来定义;输出文件流       如果想以输入/输出方式来打开,就用fstream来定义。   二、关闭文件     打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作,如:       file1.close();就把file1相连的文件关闭。   三、读写文件     读写文件分为文本文件和二进制文件的读取,对于文本文件的读取比较简单,用插入器和析取器就可以   了;而对于二进制的读取就要复杂些,下要就详细的介绍这两种方式     1、文本文件的读写     文本文件的读写很简单:用插入器(<<)向文件输出;用析取器(>>)从文件输入。     假设file1是以输入方式打开,file2以输出打开。示例如下:       file2<<"I Love You";//向文件写入字符串"I Love You"       int I;       file1>>I;//从文件输入一个整数值。       这种方式还有一种简单的格式化能力,比如可以指定输出为16进制等等,具体的格式有以下一些         操纵符 功能 输入/输出         dec 格式化为十进制数值数据 输入和输出         endl 输出一个换行符并刷新此流 输出         ends 输出一个空字符 输出         hex 格式化为十六进制数值数据 输入和输出         oct 格式化为八进制数值数据 输入和输出         setpxecision(int p) 设置浮点数的精度位数 输出           比如要把123当作十六进制输出:file1<要求
,用"|"运算符来连接,如O_APPEND|O_TEXT表示以文本模式和追加方式打开文件。       例:int handle=open("c:\\msdos.sys",O_BINARY|O_CREAT|O_WRITE)     2.close()       关闭一个句柄,原型是int close(int handle);如果成功返回0       例:close(handle)     3.lseek()       定位到指定的位置,原型是:long lseek(int handle, long offset, int fromwhere);参数offset     是移动的量,fromwhere是移动的基准位置,取值和前面讲的fseek()一样,SEEK_SET:文件首部;     SEEK_CUR:文件当前位置;SEEK_END:文件尾。此函数返回执行后文件新的存取位置。       例:         lseek(handle,-1234L,SEEK_CUR);//把存取位置从当前位置向前移动1234个字节。         x=lseek(hnd1,0L,SEEK_END);//把存取位置移动到文件尾,x=文件尾的位置即文件长度     4.read()       从文件读取一块,原型是int read(int handle, void *buf, unsigned len);参数buf保存读出的数     据,len是读取的字节。函数返回实际读出的字节。       例:char x[200];read(hnd1,x,200);     5.write()       写一块数据到文件中,原型是int write(int handle, void *buf, unsigned len);     参数的含义同read(),返回实际写入的字节。       例:char x[]="I Love You";write(handle,x,strlen(x));     7.eof()       类似feof(),测试文件是否结束,是返回1,否则返回0;原型是:int eof(int handle);       例:while(!eof(handle1)){……};     8.filelength()       返回文件长度,原型是long filelength(int handle);相当于lseek(handle,0L,SEEK_END)       例:long x=filelength(handle);     9.rename()       重命名文件,原型是int rename(const char *oldname, const char *newname); 参数oldname是旧     文件名,newname是新文件名。成功返回0       例:rename("c:\\config.sys","c:\\config.w40");     10.chsize();       改变文件长度,原型是int chsize(int handle, long size);参数size表示文件新的长度,成功返回     0,否则返回-1,如果指定的长度小于文件长度,则文件被截短;如果指定的长度大于文件长度,则在     文件后面补''\0''。       例:chsize(handle,0x12345);
/
本文档为【文件读取总结】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索