写点什么

Java 磁盘文件 IO

用户头像
关注
发布于: 2021 年 07 月 31 日

磁盘文件 IO

  • 磁盘文件的 IO 主要分为三种标准缓冲 IO、直接 IO、异步 IO。

  • JAVA API 中主要实现都是基于标准缓冲 IO,该种 IO 使用了内核内存中的 PageCache。

  • 对比分析:

  • 缓冲 IO

  • 系统根据空间局部性,进行了预读功能,在一些需要连续访问磁盘数据块时,比较友好

  • 直接 IO

  • 没有预读优化:未经过内核 PageCache

  • 读取快,无需内核态与用户态内存拷贝

  • 异步 IO

  • 非阻塞,将文件读取中的系统阻塞调用改为非阻塞,并发较好

JAVA API 对各种 IO 支持

标准 IO(缓冲 IO)
  • 读文件:FileInputStream、FileReader

  • 写文件:FileOutputStream、FileWriter

直接 IO
  • java api 暂不支持

  • 需要的话,必须通过 jni 调用 c 库

异步 IO
  • java.nio.AsynchronousFileChannel 抽象类,nio 包下未提供具体实现

附录

  1. 《java 文件读写(磁盘 IO 机制详解)》

https://blog.csdn.net/Bmouth_monkey/article/details/87370577

  1. 《5 分钟搞懂 Linux 中直接 I/O 原理》

https://cloud.tencent.com/developer/news/406991

  1. 《磁盘 IO:缓存 IO 与直接 IO》

https://www.cnblogs.com/youngerchina/p/5624462.html

发布于: 2021 年 07 月 31 日阅读数: 6
用户头像

关注

还未添加个人签名 2018.08.08 加入

还未添加个人简介

评论

发布
暂无评论
Java磁盘文件IO