文件缓冲区


01.文件缓冲区是一个内存空间,通常为一个先进先出(FIFO)队列。

  • 文件缓冲区用于保存文件写入的内容,当缓冲区满或达到阈值,则缓冲区中的数据会被写入磁盘上。
  • 文件缓冲区的设置为open()方法中的buffering参数:
    • -1,使用缺省大小的buffer:
      • 若是二进制模式,使用io.DEFAULT_BUFFER_SIZE的值,默认为4096或者8192。
      • 若是本文模式,如果是终端设备,则使用行缓存方式;负责使用二进制模式的策略。
    • 0,只在二进制模式使用,表示关闭buffer;当数据写入时,直接写入磁盘。
    • 1,只在文本模式使用,表示使用行缓冲;当数据写入时,遇见换行符则写入磁盘。
      • 当写入的时候,与换行符一同写入的内容,将作为整体写入磁盘,即使这些内容在换行符之后。
    • 大于1,用于指定buffer的大小。
      • 若是文本模式,指定的buffer大小并不生效,会使用默认的缓冲区大小。
      • 若是二进制模式,指定的buffer大小,超出设置的缓冲区后会执行flush()。
  • 文件缓冲区的方法包括:
    • flush(),将缓冲区数据写入磁盘;close()方法执行时会调用flush()方法。
      • 执行seek()方法的时候会强执行一次flush()。
  • 文件缓冲区的注意事项:
    • 文本模式下,一般都用默认缓冲区大小。
    • 二进制模式下,是一个个字节的操作,可以指定buffer的大小。
    • 通常默认缓冲区是个较好的选择,不需要调整;编程过程中,明确要写磁盘了,就手动调用一次flush()。
文档更新时间: 2020-04-20 00:09   作者:闻骏