文件操作

简介: 文件操作

计算机中文件操作采用的是流的概念

文件格式:数据在文件中都是以二进制形式存储的。数据必须按照存入的类型读出才能恢复其本来面貌。很多文件都有标准的格式比如bmp,jpg,mp3等等。

【函数】

1.基本文件操作函数包括 open read write close lseek creat

 int open(const char *pathname,int access,unsigned mode);

    pathname——要打开的文件路径或相对路径

    access——存取方式

      O_RDONLY    只读方式打开

      O_WRONLY    只写方式打开

      O_RDWR      读写方式打开

      O_CREAT     建立新文件

      O_TRUNC     文件存在则删除其所有内容再打开

      O_EXCL      与O_CREAT联用,当文件存在时返回-1,否则新建文件

      O_APPEND    向文件末尾添加

      O_TEXT      以文本方式打开,字符串"\r\n"自动转换成"\n"。

      O_BINARY    以二进制方式打开,原汁原味的体现文件内容。

    mode——文件类型及权限,仅在O_CREAT时有效

    返回值——如果文件成功打开则返回文件句柄,否则返回-1

 ***与open相似有一个专门进行新建并打开文件的函数

    int creat(*path,mode);

int read(int handle,void *buf,unsigned len);

   handle——文件句柄

   buf——内存缓冲区

   len——试图读入的字节数,不能超过buf的内存大小。

   返回值——实际读入的字节数,0表示读到末尾,-1表示出错

int write(int handle,void *buf,unsigned len);

   handle——文件句柄

   buf len——把从buf 开始的len个字节写入文件

   返回值——实际写入的字节数。-1表示出错。

  **注意:如果返回的值小于len就是说明这次write没有把len个字节写入,下次write时还会继续写入。

int close(int handle);

  handle——文件句柄

  关闭成功返回0

long lseek(int handle,long offset,int fromwhere);

  文件定位函数

  offset——从formwhere开始,移动位置指针offset个字节,offset为正则向文件末尾移动,为负则向文件头移动。

  fromwhere——开始移动时的位置

      SEEK_SET——文件头

      SEEK_CUR——当前位置

      SEEK_END——文件尾

      返回值——移动后的指针位置,-1代表出错。

 **

   lseek(fh,4L,SEEK_CUR)  向后跳过4个字节

   lseek(fh,-10L,SEEK_END) 跳到文件倒数第十个字节

   lseek(fh,0L,SEEK_CUR) 得到当前位置的指针位置

   lseek(fh,0L,SEEK_END)  得到文件长度

2.高级文件操作

 (1)打开与关闭

    fopen fclose

    文件打开方式

        r    以只读方式打开

        w    以只写方式打开

        a    以只写方式打开,位置指针指向文件末尾,源文件数据保留

        +    读写方式打开

        b    以而二进制方式打开

 (2)读写

     字符

        int fgetc(FILE *fp);//读出

        int fputc(int c,FILE *fp);//把c写入文件

    字符串

        char *fgets(char *s,int n,FILE *fp);

        从fp中读入字符串到s中,最多读n-1个字符。当读到回车,换行文件末尾或读满时函数返回。且在字符串末尾添加\0结束符。

     

        int fputs(const char *s,FILE *fp);

        将字符串s输出到fp中。返回非负数

 (3)格式化读写

        int fscanf(FILE *fp,const char *format,....);从fp读入数据到内存

        int fprintf(FIle *fp,const char *format,....);从内存中把数据写入fp中

 (4)按数据块读写

        从fp读数据块到ptr中

        unsigned fread(void *ptr,unsigned size,unsigned numemb,FILE *fp);

        size——每个数据块的大小

        nmemb——最多允许读的数据块个数

        同理还有

        把ptr里的数据写道fp中

        unsigned fwrite(const void *ptr,unsigned size,unsigned nmemb,FILE *fp);

        返回值——实际读到的数据块个数

 (5)文件定位

        int fseek(FILE *fp,long offset,int fromwhere);

        把fp的文件文件指针从fromwhere开始移动offset个字节,如果成功返回0,否则返回非零。

        fromwhere——SEEK_CUR  SEEK_END   SEEK_SET

        void fewind(FILE *fp)让fp指向文件首字节

        long ftell(FILE *fp)返回当前文件位置指针,-1时出现错误

 (6)判断文件是否结束

        int feof(FILE *fp)

        返回0没有到末尾

 (7)无条件的把缓冲区的数据写道物理设备

        int fflush(FILE *fp)


相关文章
|
6月前
|
移动开发 Linux 程序员
c++文件操作,超详细
c++文件操作,超详细
101 0
|
5月前
|
存储 C++
C++文件操作
C++文件操作
|
5月前
|
存储 程序员 编译器
文件操作详解
文件操作详解
60 0
|
程序员 C语言 Windows
【文件操作】
【文件操作】
45 0
|
6月前
|
弹性计算 运维 Shell
文件操作
【4月更文挑战第30天】
39 0
|
程序员 编译器 C语言
文件操作(中)
文件操作(中)
36 0
|
存储 编译器 数据库
文件操作介绍(上)
文件操作介绍(上)
52 0
|
存储 C语言
文件操作介绍(下)
文件操作介绍(下)
60 0
|
存储 编译器 Windows
【C】文件操作详解
什么是文件 磁盘上的文件是文件。 但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件
|
存储 编译器 程序员
文件操作(详解)
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件, 或者输出内容的文件。
125 0
文件操作(详解)