文件IO操作

  • 1. open打开操作
  • 2. close关闭操作
  • 3. creat创建操作
  • 4. write写操作
  • 5. read读操作

Linux下一切皆文件,所以文件IO是很重要的也是很基础的操作。关于Linux文件IO的操作主要有五个方面,分别是打开,关闭,创建,写与读。

1. open打开操作

我们先来看一下打开文件open函数:

int open(const char *path, int oflags,mode_t mode);

– 参数path表示:路径名或者文件名。路径名为绝对路径名。
– 参数oflags表示:打开文件所采取的动作
O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写;
O_NOCTTY如果路径指向终端,则不将设备作为此进程的控制终端
O_NDELAY非阻塞方式操作文件
– mode表示:设置创建文件的权限。权限的宏定义很麻烦,可以直接用数
字替代
– 返回值:出错返回-1;否则返回文件句柄
下面是open函数的实例:

//头文件
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
//主函数
main(){int fd;//定义变量存放文件句柄//定义三个路径char *leds = "/dev/leds";   //已存在的路径char *test1 = "/bin/test1"; //未存在的路径char *test2 = "/bin/test2"; //未存在的路径//如果返回值为-1.打印错误信息,否则输出文件的句柄//因为该文件路径存在,所以返回的信息为:“/dev/leds fd is 4”if((fd = open(leds,O_RDWR|O_NOCTTY|O_NDELAY))<0){printf("open %s failed!\n",leds);}printf("\n%s fd is %d\n",leds,fd);//如果返回值为-1.打印错误信息,否则输出文件的句柄  //因为该文件路径不存在,所以返回的信息为:“open /bin/test1 failed”if((fd = open(test1,O_RDWR,0777))<0){printf("open %s failed!\n",test1);}printf("%s fd is %d\n",test1,fd);   //如果返回值为-1.打印错误信息,否则输出文件的句柄  //虽然该文件路径不存在,但是参数里添加了O_CREAT,//文件不存在时创建文件,所以返回的信息为:“/dev/test2 fd is 5”if((fd = open(test2,O_RDWR|O_CREAT,0777))<0){printf("open %s failed!\n",test2);}printf("%s fd is %d\n",test2,fd);
}

.c文件写完之后按照Linux基础(3)中的步骤,编译该文件,然后在ARM板上运行即可。

2. close关闭操作

关闭文件操作比较简单,参数只有一个:

int close(int fd);

fd为已打开文件的句柄。

3. creat创建操作

open函数里面有O_CREAT参数可以直接创建不存在的文件,creat创建文件是另一种方法:

int creat(const char * pathname, mode_t mode);

– 参数path表示:路径名或者文件名。路径名为绝对路径名。
– 参数oflags表示:打开文件所采取的动作。
• O_RDONLY文件只读;O_WRONLY文件只写;O_RDWR文件可读可写
例程为:

//标准输入输出头文件
#include <stdio.h>//文件操作函数头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>main()
{int fd;//开发板中已经存在/dev/leds文件char *leds = "/dev/leds";//开发板中不存在的文件/bin/test1char *test1 = "/bin/test1";//开发板中不存在的文件/bin/test2char *test2 = "/bin/test2";//需要新建的文件/bin/test3char *test3 = "/bin/test3";//使用open函数打开文件if((fd = open(leds, O_RDWR|O_NOCTTY|O_NDELAY))<0){printf("open %s failed\n",leds); }printf("%s fd is %d\n",leds,fd);//使用open函数打开不存在的文件,不添加O_CREAT标识符,会报错if((fd = open(test1, O_RDWR))<0){printf("open %s failed\n",test1); }//打开文件创建文件,添加标志位O_CREAT表示不存在这个文件则创建文件if((fd = open(test2, O_RDWR|O_CREAT,0777))<0){printf("open %s failed\n",test2); }printf("%s fd is %d\n",test2,fd);fd = creat(test3,0777);if(fd = -1){printf("%s fd is %d\n",test3,fd);}else{printf("create %s is succeed\n",test3);}
}

4. write写操作

写文件write函数:

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

– 参数fd表示:使用open 函数打开文件之后返回的句柄。
– 参数*buf表示:写入的数据
– 参数count表示:最多写入字节数
– 返回值:出错-1,;其它数值表示实际写入的字节数

5. read读操作

读文件read函数:

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

– 参数fd:使用open 函数打开文件之后返回的句柄
– 参数*buf:读出的数据保存的位置
– 参数len:每次最多读len 个字节
– 返回值:错误返回-1,执行成功返回实际读取值

Linux基础(6)--文件IO操作相关推荐

  1. 淮海工学院linux实验二文件IO操作,淮海工学院计算机科学系

    <淮海工学院计算机科学系>由会员分享,可在线阅读,更多相关<淮海工学院计算机科学系(15页珍藏版)>请在技术文库上搜索. 1.淮海工学院计算机科学系实验报告书课 程名: 数据结 ...

  2. linux的文件io操作(转)

    linux文件IO操作有两套大类的操作方式:不带缓存的文件IO操作,带缓存的文件IO操作.不带缓存的属于直接调用系统调用(system call)的方式,高效完成文件输入输出.它以文件标识符(整型)作 ...

  3. Day 01嵌入式学习之Linux基础知识和命令操作

    学习嵌入式开发的随堂笔记 Day 01嵌入式学习之linux基础知识和命令操作 1.英文: read:读,r字母 write:写,w字母 execute:执行,运行,x字母 directory:目录, ...

  4. Python 文件 IO 操作详解

    Python 文件 IO 操作详解 1.文件 IO 常用操作 2.文件打开操作 2.1 打开命令 2.2 命令参数 2.2.1 路径 2.2.2 mode 2.2.3 buffering 缓冲区 2. ...

  5. Linux下对文件的操作及添加新用户

    Linux下对文件的操作及添加新用户 一.对文件的操作 1.打包压缩文件 2.解压缩文件 3.对文件操作的其他命令 二.创建新用户 一.对文件的操作 1.打包压缩文件 2.解压缩文件 3.对文件操作的 ...

  6. python和R文件IO操作对比及dataframe创建方式对比:read_csv、to_csv、write.csv、 data.frame、pd.DataFrame

    python和R文件IO操作对比及dataframe创建方式对比 很多工程师可能刚开始的时候只熟悉python或者R其中的一个进行数据科学相关的任务. 那么如果我们对比这学习可以快速了解语言设计背后的 ...

  7. python io操作有什么_Python笔记:文件IO操作

    读取文件 使用open()打开文件,文件不存在会抛出IOError错误. try: f = open('/path/to/file', 'r') print(f.read()) finally: if ...

  8. C++之文件IO操作流

    C++之文件IO操作流 前两节介绍了C++的IO流类库,标准设备IO操作流中部分预定义流对象的成员函数以及IO格式控制.那今天我将继续介绍关于C++中的流操作内容--文件IO操作流fstream.并会 ...

  9. 基于QT的【第一个项目】设计+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作

    基于QT的第一个项目+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作 第一阶段 网络编程局域网TCP/IP聊天QT实现 main.c ma ...

最新文章

  1. Linux基础之grep攻坚
  2. oracle access manager token,AuthenticationManager验证原理
  3. CRM的使用是讲究技巧的
  4. 年度榜单:2013年最流行的15款免费英文字体
  5. Widget开发中遇到的坑
  6. 引用类型赋值“.NET技术”为null与加速垃圾回收
  7. 使用vue的生命周期函数_异步_同步获取字典数据---基于Vue的uniapp手机端_前端UI_uview工作笔记003
  8. Dogeswap上线18小时TVL突破300万美金
  9. JAXB--@XmlElementWrapper注解(二)
  10. linux分区命令mtd,修改IPQ4019/4018的MTD分区
  11. AllenNLP框架学习笔记(模型篇之一)
  12. Linux安装phpstudy
  13. 关于一级域名和二级域名跨域的解决方案
  14. 2013年国家自然科学基金经费统计
  15. 英语数字表达方式大全
  16. 00012.01抽象类与抽象方法(abstract)
  17. 用Java输出100内的质数和合数(包含100)
  18. android辅助功能手势,Android辅助功能——全局手势放大实现原理
  19. JavaScript——JSON
  20. APP手机软件开发方案怎么做?

热门文章

  1. linux给ftp账号分配sftp权限,Linux设置用户通过SFTP访问目录的权限教程
  2. Unity3D-声音处理
  3. H3C认证无线互联网络专家
  4. java 前台播放视频_「纯js项目」海康视频项目,java后台+前台web显示的,望提供思路!...
  5. mysql 不能定义用户变量名_mysql 变量名称的使用不当的一个错误
  6. 概率图模型更进一步的知识点
  7. concurrent模块的使用
  8. 面试官:说说你知道多少种线程池拒绝策略
  9. python学习总结----内置函数及数据持久化
  10. 微信小程序实现文字跑马灯