在码代码的时候咱们常常会遇到文件系统类型的操做,好比打开一个文件,写文件,读文件之类的操做。涉及这些操做的函数有open(),write(),read()以及fopen(),fwrite(),fread()等函数。那么这些f开头的文件系统操做函数和非f开头的文件系统操做函数有什么区别?这就要介绍一下缓冲文件操做系统和非缓冲文件操做系统,这两类系统都是C语言使用的磁盘文件系统。函数
缓冲文件操做系统:系统会自动的在内存区为每个正在使用的文件开辟一块缓冲区,缓冲区的大小通常由各个C的版本规定,通常的为512Byte即0.5K大小。今后盘向内存读数据时,则一次将一些数据从磁盘文件送内存缓冲区(充满缓冲区),而后再从缓冲区逐个将数送给接收变量(文件描述符);从内存写数据到磁盘文件时,现将数据塞满缓冲区,在一次性将数据从缓冲区送到磁盘文件。用缓冲区能够一次读入一批数据,或输出一批数据,而不是执行一次输入或输出函数就去访问一次磁盘,这样作的目的是减小对磁盘的实际读写次数,由于每一次读写都要移动磁头并寻找磁道扇区,花费必定的时间。缓冲文件系统是借助文件结构体指针来对文件进行管理,经过文件指针来对文件进行访问,既能够读写字符、字符串、格式化数据,也能够读写二进制数据,缓冲文件系统函数通常是由f开头的函数,如fopen(),fwrite(),fread()。操作系统
非缓冲文件系统:非缓冲文件系统不会自动地设置缓冲区,须要用户根据本身的须要去设置,在传统的UNIX下,用缓冲文件系统来处理文本文件,用非缓冲文件系统来处理二进制文件。非缓冲文件系统依赖于操做系统,经过操做系统的功能对文件进行读写,是系统级的输入输出,它不设文件结构体指针,只能读写二进制文件,但效率高、速度快。指针