一、文件IO(IO编程)
系统IO:和系统有关的IO接口函数
标准IO: 标准库里面的IO接口函数 #include <stdio.h>
目录操作:操作目录相关的IO接口函数
LCD屏的操作:刷图
TS(touch screen)触摸屏的操作:点击、滑动

二、文件
1.一切皆文件(重点)
 一切皆文件,对于linux来说,所有的硬件设备都是文件。比如说你要去操作一个LCD的
硬件屏幕,对于我们应用开发者来说,我们不需要去了解它的寄存器,我们只需要找到
LCd所对应的哪一个文件就可以操作LCD

2.linux系统是怎样去管理它的文件
 每一种硬件都对应着一种文件类型,那这么多的硬件对应这各种各样的文件类型;在linux如何
对他们进行管理;所有的硬件文件类型都由VFS来管理;
说明:
有了VFS来同统一管理所有的硬件类型,就可以实现不同格式文件类型之间的内容的交互;
比如你把U盘里面的内容拷贝到电脑的硬盘里面,就是通过VFS来控制协调。

3.在linux中有哪些文件类型7种(重点)
'-':普通文件
'd' :目录文件
'l' :链接文件
'p':管道文件 (系统编程)
's':套接字文件 (网络编程)
'c':字符设备文件
'b':块设备文件

4.文件类型的其它分类
普通文件类型:txt记事本文件、jpg图片文件、tar.gz压缩文件等等
看不见的文件:proc目录下的系统文件,这里面的文件信息是系统文件信息,实时变化,没有权限去修改它
设备文件(硬件文件):这里面的每一个文件描述的都是一个硬件 /dev目录下

三、怎么样来操作文件
系统IO:open、close、read、write、lseek
标准IO:fopen、fclose、fread、fwrite、fseek

四、系统IO---man手册
1.使用man手册来学习系统IO函数
       1   Executable programs or shell commands  用来查看普通命令
       2   System calls (functions provided by the kernel)  系统调用接口(系统IO)
       3   Library calls (functions within program libraries) 库调用接口(标准IO)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous  (including  macro  packages  and  conventions), e.g.
           man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]

2.使用方法(3要素)
1)第一步找到它的头文件和函数原型
SYNOPSIS
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

int open(const char *pathname, int flags);
       int open(const char *pathname, int flags, mode_t mode);

2)第二步看DESCRIPTION描述的第一段话
DESCRIPTION
       Given a pathname for a file, open() returns a file descriptor, a small,
(重点找下划线的单词--参数)

3)第三步查看它的返回值
RETURN VALUE
       open(), openat(), and creat() return the new file descriptor, or -1  if

五、系统IO
1.open
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

int open(const char *pathname, int flags);
参数:
    pathname: 文件路径名 (字符指针=字符串)
    flags:标志量
    O_RDONLY, 只读
    O_WRONLY, 只写
    O_RDWR.可读可写
    O_CREAT, If the file does not exist, it will be created如果没有自动创建
返回值:
    成功:文件描述符
    失败:-1

练习1:
 使用open函数自动创建一个2.txt文件

2.文件描述符
练习2:
 死循环open函数,打印出文件描述符fd的值,观察它的现象
while(1)
{
  fd = open();
  printf("fd=%d\n",fd);    
}
现象:
1)缺了3个文件描述符的值 0 1 2
2)最大的文件描述符的值是1023

总结:
1)文件描述符的个数只有1024个
2)有3个文件描述符被系统占用 0 1 2
3)开发者创建的文件描述符的值是从3开始的
gec@ubuntu:/mnt/hgfs/GZ2264/6_文件IO/01/code$ vi /usr/include/unistd.h 
 212 /* Standard file descriptors.  */
 213 #define STDIN_FILENO    0   /* Standard input.  */   -->标准输入 键盘
 214 #define STDOUT_FILENO   1   /* Standard output.  */   -->标准输出 屏幕
 215 #define STDERR_FILENO   2   /* Standard error output.  */ -->标准出错 屏幕

练习3:
 当前路径下有3个文件1.txt 2.txt 3.txt
fd1 = open("1.txt",O_RDWR) //fd1 = 3
fd2 = open("2.txt",O_RDWR) //fd2 = 4
fd3 = open("3.txt",O_RDWR) //fd3 = 5

2.close
       #include <unistd.h>

int close(int fd);
参数:
    fd:文件描述符
返回值:
    成功:0
    失败:-1
说明:
 如果重复关闭一个描述符,它会失败。

练习4:
 当前路径下有3个文件1.txt 2.txt 3.txt
fd1 = open("1.txt",O_RDWR) //fd1 = 3
fd2 = open("2.txt",O_RDWR) //fd2 = 4
fd3 = open("3.txt",O_RDWR) //fd3 = 5
close(fd1);
fd4 = open("1.txt",O_RDWR) //fd4 = 3
fd5 = open("2.txt",O_RDWR) //fd5 = 6
close(fd2);
close(fd3);
fd6 = open("3.txt",O_RDWR) //fd6 = 4
fd7 = open("3.txt",O_RDWR) //fd7 = 5
总结:
 文件描述符的值是从数组里面从小到大按照顺序拿,如果没有就往往后面找。

3.read
SYNOPSIS
       #include <unistd.h>

ssize_t read(int fd, void *buf, size_t count);
参数:
    fd:文件描述符
    buf:你想要读取的buffer
    count:你想要读取的字节数
返回值:
    成功:> 0返回实际读到的字节数
             =0(zero indicates end offile) 如果是0预示着文件尾    
    失败:-1(<0)
结论:
 读数据的时候,返回值是你实际读到的字节数;并不是想读多少就读多少。当你想读的字节数小于文件里面实际有的字节数的时候,此时count的值和返回值是一样的;当你想读的字节数大于文件里面实际有的字节数的时候,返回值就是文件里面的实际的字节数。

文件IO(IO编程)相关推荐

  1. 提高生产力:文件和IO操作(ApacheCommonsIO-汉化分享)

    复制.移动.删除.比较.监控.文件读写 等文件和IO操作是编程中比较常用的功能. 幸运的是,Apache Commons IO等开源组件已经帮我们实现了.        我们可以不用重复造轮子了. 1 ...

  2. arduino nano 蓝牙_掌控板IO接口编程入门 | 用Arduino玩转掌控板(ESP32)系列

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  3. ESP32与掌控板IO接口编程入门 | ESP32轻松学(Arduino版)

    众所周知,掌控板在创客教育中用的非常广泛,它是一块基于 ESP32 的学习开发板.大家对掌控板编程,用的比较多的都是图形化编程的方式,比如 mPython.Mind+ 等.但是,既然掌控板是基于 ES ...

  4. (33)ISE 约束文件(IO约束)

    (33)ISE 约束文件(IO约束) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)ISE 约束文件(IO约束) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...

  5. 文件数据IO 的细节分析

    文件数据IO 的细节分析: 参考: Linux设备驱动开发详解:基于最新的Linux4.0内核:宋宝华编著. 编程离不开数据, 所以数据获取是编程的第一步. 1.文件打开方式 数据IO可以是阻塞式式的 ...

  6. Java基础(七)——文件、IO流

    文章目录 文件.IO流 1 流 2 BIO 3 NIO 4 AIO 文件.IO流 1 流 InputStream/Reader:所有的输入流的基类,前者是字节输入流,后者是字符输入流 OutputSt ...

  7. java删除相对路径文件夹_Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录...

    Java IO,io,文件操作,删除文件,删除文件夹,获取文件父级目录 这里先简单的贴下常用的方法: File.separator //当前系统文件分隔符 File.pathSeparator// F ...

  8. 使用uploadify上传大文件报 IO error #2038错误的解决方案

    使用uploadify上传大文件报 IO error #2038错误的解决方案 参考文章: (1)使用uploadify上传大文件报 IO error #2038错误的解决方案 (2)https:// ...

  9. 《java-----我的第一款像样的小软件》---运用了jsoup,jmail,多线程,文件的io操作等等

    运用了jsoup,jmail,多线程,文件的io操作等等多项技术,经历了12*5多个小时终于完成了. 部分代码: package com.ytu.view;import java.awt.Border ...

  10. 第九章 文件处理(IO) ② 代码

    第九章 文件处理IO 代码 1.课前测试 2.异常捕获 try{}-catch{} 3.创建目录/文件 File 文件的基本操作 4.获取目录所有子文件名/子级文件对象数组 5.遍历目录下的文件 6. ...

最新文章

  1. 面试官:谈谈Redis缓存和MySQL数据一致性问题
  2. 编译驱动时出现Cannot open file trace.h错误
  3. 最少步数(dfs + bfs +bfs优化)
  4. linux下面拷贝gbk编码的网页
  5. 史上最让数学家无奈的规定!背后真相让人不敢相信,可是没有人能证明对错.........
  6. C++并发编程实战---阅读笔记
  7. 余世维《职业经理人常犯的错误》[文字版]
  8. WIN7 MBR转GPT分区实现UEFI启动
  9. Android Studio创建AVD教程
  10. win7安装iis及web配置教程
  11. BurpSuite系列(四)----Scanner模块(漏洞扫描)
  12. ftp,fxp服务器误删代码如何恢复
  13. 2020计算机专硕考数二的学校,2020考研备考:考研数一、数二、数三哪个最难?...
  14. B端设计指南——表格 究竟应该如何设计?
  15. 可以缩放平移的时间刻度尺,方便自定义UI需求。仿萤石云历史录像时间轴
  16. (转)《一定要争气》
  17. lombok中的builder注解居然是一种设计模式:让我们了解一下超级实用的“建造者模式”吧
  18. 模拟电路学习常用原件之电阻的作用和仿真
  19. python3 安装依赖库db4-devel和libpcap-devel安装失败 请大佬指教
  20. 白帽子,强大的XSS钓鱼漏洞,怎么获取用户的真实ip

热门文章

  1. Ghost安装系统步骤
  2. matlab人脸识别代码,基于matlab的人脸识别源代码.doc
  3. 算法 动画算法 算法动画 动画原理——总体概览图
  4. OpenWrt 学习笔记【5】内核配置
  5. 视频教程-8086汇编语言讲座-其他
  6. LCD12864(ST7565P)字符汉字显示(STM32F103)
  7. jquery 的模块化
  8. 2019年VQA论文整理
  9. 毕设项目 - 基于SSM的教师工作考核绩效管理系统(含源码+论文)
  10. 【项目实践】充电台灯电路拆解