Linux基础(6)--文件IO操作
文件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操作相关推荐
- 淮海工学院linux实验二文件IO操作,淮海工学院计算机科学系
<淮海工学院计算机科学系>由会员分享,可在线阅读,更多相关<淮海工学院计算机科学系(15页珍藏版)>请在技术文库上搜索. 1.淮海工学院计算机科学系实验报告书课 程名: 数据结 ...
- linux的文件io操作(转)
linux文件IO操作有两套大类的操作方式:不带缓存的文件IO操作,带缓存的文件IO操作.不带缓存的属于直接调用系统调用(system call)的方式,高效完成文件输入输出.它以文件标识符(整型)作 ...
- Day 01嵌入式学习之Linux基础知识和命令操作
学习嵌入式开发的随堂笔记 Day 01嵌入式学习之linux基础知识和命令操作 1.英文: read:读,r字母 write:写,w字母 execute:执行,运行,x字母 directory:目录, ...
- Python 文件 IO 操作详解
Python 文件 IO 操作详解 1.文件 IO 常用操作 2.文件打开操作 2.1 打开命令 2.2 命令参数 2.2.1 路径 2.2.2 mode 2.2.3 buffering 缓冲区 2. ...
- Linux下对文件的操作及添加新用户
Linux下对文件的操作及添加新用户 一.对文件的操作 1.打包压缩文件 2.解压缩文件 3.对文件操作的其他命令 二.创建新用户 一.对文件的操作 1.打包压缩文件 2.解压缩文件 3.对文件操作的 ...
- python和R文件IO操作对比及dataframe创建方式对比:read_csv、to_csv、write.csv、 data.frame、pd.DataFrame
python和R文件IO操作对比及dataframe创建方式对比 很多工程师可能刚开始的时候只熟悉python或者R其中的一个进行数据科学相关的任务. 那么如果我们对比这学习可以快速了解语言设计背后的 ...
- python io操作有什么_Python笔记:文件IO操作
读取文件 使用open()打开文件,文件不存在会抛出IOError错误. try: f = open('/path/to/file', 'r') print(f.read()) finally: if ...
- C++之文件IO操作流
C++之文件IO操作流 前两节介绍了C++的IO流类库,标准设备IO操作流中部分预定义流对象的成员函数以及IO格式控制.那今天我将继续介绍关于C++中的流操作内容--文件IO操作流fstream.并会 ...
- 基于QT的【第一个项目】设计+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作
基于QT的第一个项目+所有组件配合使用+网络编程局域网通信+文件IO操作+登录界面和头像+多界面跳转+JSON数据解析+表情包制作 第一阶段 网络编程局域网TCP/IP聊天QT实现 main.c ma ...
最新文章
- Linux基础之grep攻坚
- oracle access manager token,AuthenticationManager验证原理
- CRM的使用是讲究技巧的
- 年度榜单:2013年最流行的15款免费英文字体
- Widget开发中遇到的坑
- 引用类型赋值“.NET技术”为null与加速垃圾回收
- 使用vue的生命周期函数_异步_同步获取字典数据---基于Vue的uniapp手机端_前端UI_uview工作笔记003
- Dogeswap上线18小时TVL突破300万美金
- JAXB--@XmlElementWrapper注解(二)
- linux分区命令mtd,修改IPQ4019/4018的MTD分区
- AllenNLP框架学习笔记(模型篇之一)
- Linux安装phpstudy
- 关于一级域名和二级域名跨域的解决方案
- 2013年国家自然科学基金经费统计
- 英语数字表达方式大全
- 00012.01抽象类与抽象方法(abstract)
- 用Java输出100内的质数和合数(包含100)
- android辅助功能手势,Android辅助功能——全局手势放大实现原理
- JavaScript——JSON
- APP手机软件开发方案怎么做?
热门文章
- linux给ftp账号分配sftp权限,Linux设置用户通过SFTP访问目录的权限教程
- Unity3D-声音处理
- H3C认证无线互联网络专家
- java 前台播放视频_「纯js项目」海康视频项目,java后台+前台web显示的,望提供思路!...
- mysql 不能定义用户变量名_mysql 变量名称的使用不当的一个错误
- 概率图模型更进一步的知识点
- concurrent模块的使用
- 面试官:说说你知道多少种线程池拒绝策略
- python学习总结----内置函数及数据持久化
- 微信小程序实现文字跑马灯