文件IO

来源:互联网 发布:java和hadoop 编辑:程序博客网 时间:2024/09/21 09:02
                        系统IO

概述

    由系统调用提供的API;    系统IO是底层接口,因此任何设备和文件最终都是可以通过系统IO来操作。    系统IO不提供缓冲区,意味着每次读写都必须进入内核,对于大数据量的读写操作会影响效率。

头文件:

    #include <stdio.h>    #include <sys/types.h>    #incldue <sys/stat.h>    #include <fcntl.h>    #include <unistd.h>     

一、打开文件 open

int open(const *pathname,int flags);

    返回值:  文件描述符    参数1 :  文件名    参数2 :  打开方式            O_RDONLY 只读           O_WRONLY 只写            O_RDWRONLY 可读写       O_CREAT 创建文件(加权限)             O_TRUNC 清空原文件内容   O_APPEND 追加方式写入            O_EXCL 创建互斥     例子:        int fd = open("./a.txt",O_RDWR|O_CREAT,0777);         //0777是权限,若没有O_CREAT则不用写。

二、读文件 read

ssize_t read(int fd,void *buf,size_t count);

    返回值:  成功读到的字数    参数1 :  文件描述符    参数2 :  存放读到的数据到buf中    参数3 :  读的最大长度

三、写文件 write

ssize_t write(int fd,void *buf,size_t count);

    返回值:  成功写入的字数    参数1 :  文件描述符    参数2 :  写进文件的数据    参数3 :  写的最大长度

四、文件偏移 lssek

ssize_t lseek(int fd,off_t offset,int whence);

    返回值:  文件指针实际偏移量    参数1 :  文件描述符    参数2 :  以whence为参照物的偏移量    参数3 :  参照位置            SEEK_SET 文件指针指向文件头 然后开始偏移            SEEK_CUR 文件指针指向文件当前位置 然后开始偏移            SEEK_END 文件指针指向文件末尾  然后偏移    注:对文件的读写都是从文件指针位置开始操作,打开文件时,文件指针默认指向文件头。读写操作都会影响文件指针的位置,所以读写操作后按需求进行指针偏移。

五、关闭文件

close(int fd);


                        标准IO

概述

    由标准c库提供的API;    标准输入 FILE *stdin    fread(char *buf,10,1,stdin);    标准输出 FILE *stdout   fprintf(stdout,"%d %c",int ,char );    标准出错 FILE *stderr   fprintf(stderr,"%d %c",int , char );    标准IO提供缓冲区,增加数据处理的吞吐量。    在能使用标准IO的场合,我们尽量使用它。    无法使用标准IO的场合(如驱动文件),我们还是只能用系统IO。

一、打开文件 fopen

FILE *fopen(const char *pathname,const char *mode);

        返回值:  FILE指针        参数1 :  文件名        参数2 :  打开权限    //文件必须存在,指针默认在文件头                "r"只读 "r+"读写    //文件不存在则创建,如果文件存储则会清空文件                "w"只写 "w+"读写    //文件不存在则创建,如果文件存储文件指针则指向文件末尾                "a"只写 "a+"读写

二、读文件 fread

size_t fread(char *buf,size_t size, size_t number,FILE *stream);

返回值:  成功读取的次数参数1 :  存放读取的数据参数2 :  一次读的长度参数3 :  读多少次参数4 : 要读取的文件的FILE指针

三、写文件 fwrite

size_t fwrite(char *buf,size_t size, size_t number,FILE *stream);

返回值:  成功写入的次数参数1 :  写入文件的数据参数2 :  一次写的长度参数3 :  写多少次参数4 : 要写入的文件的FILE指针

四、文件偏移 fsleek

int fseek(FILE *stream, long offset, int whence);    返回值:  成功返回0    参数1 :  要偏移的FILE指针    参数2 :  参照whence的偏移量    参数3 :  偏移参照物             SEEK_SET 文件头             SEEK_CUR 当前位置             SEEK_END 文件末尾    long ftell(FILE *stream); 获取文件偏移量    void rewind(FILE *stream); 把指针偏移到文件头

五、关闭文件 fclose

fclose(FILE *stream);

0 0