先要回答的问题
文件IO指的是什么?
本文主要讲述如何调用Linux OS所提供的相关的OS API,实现文件的读写。
如何理解文件IO?
IO就是input output的意思,文件io就是文件输入输出,也就是文件读写。
文件读写,读写的是什么?
是数据。
文件IO(Input Output),也就是输入输出是对什么而言的?参考点是什么?
是CPU
能不能越过OS,直接操作文件呢?
当有OS的时候,应用程序基于OS运行时,必须通过OS API假借OS之手,才能操作底层硬件,无法回避。
文件IO涉及到的OS API
①open函数:打开文件
②close函数:关闭文件
③read函数:从打开的文件读数据
④write函数:向打开的文件写数据
⑤lseek函数:移动在文件中要读写的位置
⑥dup函数:文件读写位置重定位函数,本来是写到这个文件,重定位后可以写到另一个文件里面
⑦fcntl函数:文件描述符设置函数
⑧ioctl函数:一个特殊的函数
文件读写的简单例子
文件操作三步曲
①打开文件 open函数
②读、写等操作文件 read、write函数
③关闭文件 close函数
代码演示
1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <sys/stat.h> 4 #include <fcntl.h> 5 #include <unistd.h> 6 7 int main(void) 8 { 9 int fd = 0; 10 11 fd = open("./file.txt", O_RDWR); 12 if(-1 == fd) 13 { 14 printf("open fail\n"); 15 return 0; 16 } 17 else 18 { 19 printf("open ok\n"); 20 } 21 22 char buf1[] = "hello world"; 23 write(fd, (void *)buf1, 11); 24 25 lseek(fd, 0, SEEK_SET); 26 27 char buf2[30] = {0}; 28 read(fd, buf2, sizeof(buf2)); 29 30 printf("buf2 = %s\n", buf2); 31 32 close(fd); 33 34 return 0; 35 }