Skip to content

Latest commit

 

History

History
15 lines (12 loc) · 1.18 KB

chapter_5_io.md

File metadata and controls

15 lines (12 loc) · 1.18 KB

流和File对象

对于ASCII字符集,一个字符用一个字节表示。对于国际字符集,一个字符可用多个字节表示。标准的i/o文件流可以用单个字节或者多个字节(wide)字符集。流的定向决定了所读、写的字符是单字节还是多字节。

缓冲

标准i/o库提供缓存的目的是 尽可能较少使用read和write调用的次数。
标准i/o提供三种类型的缓冲

  • 全缓冲: 在填满标准i/o缓冲区后才进行实际i/o操作。flush将缓冲区中的内容写到磁盘上。
  • 行缓冲: 当输入和输出遇到换行时,才实行i/o操作。有个限制: 1. 当填满缓冲区时,没有换行也i/o操作
  • 不带缓冲: 像标准错误输出,不带缓冲,使错误尽快显示出来

打开流

当用追加写类型打开一个文件,每次写都将数据写到文件到当前尾端处。如果有多个进程用标准i/o追加写方式打开同一文件,那么来自每个进程的数据都将正确地写到文件中。

内存流

标准i/o库把数据缓存在内存中,因此每次一个字符和每次一行的i/o更有效。所有的i/o都是通过在缓冲区和主存之间来回传送字节完成的。