文件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
- 标准IO, 文件IO
- IO文件
- 文件IO
- IO-文件
- 文件IO
- 文件IO
- 文件IO
- 文件io
- 文件 io
- 文件IO
- 文件IO
- 文件IO
- 文件IO
- 文件IO
- 文件IO
- 文件IO
- 文件IO
- 文件IO
- 2017年伊始,你需要尝试的25个Android第三方库
- 合并Shader系列 | 如何合并渲染状态
- linux中lost+found目录的作用
- Git学习文档之一 学习文档-发布
- 如何使文字垂直居中
- 文件IO
- activity 章节
- 猜数字游戏java
- JDK8中的getOrDefault方法
- 20个很棒的android开源项目帮助你提升开发技能
- android利用反射创建数据库和其他操作
- UART简介及与COM口的区别
- remind Javaweb登录的糟心事
- Parcelable中List数据的跨进程读写操作