文件IO-缓冲区

简介: 文件IO-缓冲区

如何理解输入输出

1.站在文件的角度

 

2.站在内存的角度

我们写程序,是站在内存的角度思考问题的。

如果我们是操作文件,向文件中输入,从文件中获取的表达更为准确。

标准C库IO与Linux系统IO的关系

1.C库函数底层其实是调用了Linux系统函数的

2.C库IO是有缓冲区的,Linux系统函数是没有缓冲区的

有缓冲区的好处:

       提高效率

比如现在有100个鸡蛋需要从A点运送到B点,在没有缓冲区的情况下只能一个一个的运送,而如果存在缓冲区,那么就相当于有一个框子,假设这个框子能装20个鸡蛋,当框子装满或者flush刷新或者A区的鸡蛋没有剩余了,则通过框子向B点运送鸡蛋。

刷新内存缓冲区的三个时机

1.主动刷新   fflush

2.缓冲区已满

3.正常关闭文件   close   return   exit

文件指针FILE

我们知道C语言操作文件都是通过FILE来进行的,FILE是一个结构体。其中有三个最为重要的成员

1.通过文件描述符可以索引到相应的磁盘文件

2.通过文件读写指针可以确定在该文件中的读写位置

3.I/O缓冲区(与前面说的功能一样,减少磁盘读写次数来提高效率)

磁盘读写为什么慢

在学习的过程中我们经常会碰到减少磁盘读写操作来提高效率,那是因为磁盘的操作相对比较慢。这是硬件上的缺陷,大部分的磁盘都是机械磁盘,读取寻道时间和写入寻道时间都是毫秒级别的,而内存属于电子设备,读写是纳秒级别的。1ms = 10^7ns

相关文章
|
1天前
|
存储 缓存 安全
Java 中 IO 流、File文件
Java 中 IO 流、File文件
|
1天前
|
缓存 Linux API
文件IO和标准IO的区别
文件IO和标准IO的区别
22 2
|
1天前
|
Java Unix Windows
|
1天前
|
缓存 Linux
Linux 文件IO简单实例
Linux 文件IO简单实例
15 1
|
1天前
|
Java 开发者
Java一分钟之-Java IO流:文件读写基础
【5月更文挑战第10天】本文介绍了Java IO流在文件读写中的应用,包括`FileInputStream`和`FileOutputStream`用于字节流操作,`BufferedReader`和`PrintWriter`用于字符流。通过代码示例展示了如何读取和写入文件,强调了常见问题如未关闭流、文件路径、编码、权限和异常处理,并提供了追加写入与读取的示例。理解这些基础知识和注意事项能帮助开发者编写更可靠的程序。
17 0
|
1天前
|
C++ 数据格式
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
【C++】C++中的【文件IO流】使用指南 [手把手代码演示] & [小白秒懂]
|
1天前
|
安全 Go
Golang深入浅出之-Go语言标准库中的文件读写:io/ioutil包
【4月更文挑战第27天】Go语言的`io/ioutil`包提供简单文件读写,适合小文件操作。本文聚焦`ReadFile`和`WriteFile`函数,讨论错误处理、文件权限、大文件处理和编码问题。避免错误的关键在于检查错误、设置合适权限、采用流式读写及处理编码。遵循这些最佳实践能提升代码稳定性。
24 0
|
1天前
|
存储 Java Linux
【Java EE】 文件IO的使用以及流操作
【Java EE】 文件IO的使用以及流操作
|
1天前
|
存储 固态存储 Java
文件IO讲解
文件IO讲解
34 0
|
1天前
|
API
使用commons-io-2.0 API来实现监听文件变化
使用commons-io-2.0 API来实现监听文件变化

热门文章

最新文章