设为首页 加入收藏

TOP

JDK 源码阅读 : FileDescriptor(五)
2018-06-07 09:21:34 】 浏览:732
Tags:JDK 源码 阅读 FileDescriptor

m/RandomAccessFile,就要把他关联的文件描述符所关联的所有FileInputStream/FileOutputStream/RandomAccessFile对象都关闭呢?

这个可以看看FileInputStream#close的JavaDoc:

Closes this file input stream and releases any system resources
associated with the stream.
If this stream has an associated channel then the channel is closed
as well.

也就是说FileInputStream#close是会吧输入/出流对应的系统资源关闭的,也就是输入/出流对应的文件描述符会被关闭,而如果这个文件描述符还关联这其他输入/出流,如果文件描述符都被关闭了,这些流自然也就不能用了,所以closeAll里把这些关联的流通通都关闭掉,使其不再可用。

总结

  • FileDescriptor的作用是保存操作系统中的文件描述符
  • FileDescriptor实例会被FileInputStream/FileOutputStream/RandomAccessFile持有,这三个类在打开文件时,在JNI代码中使用open系统调用打开文件,得到文件描述符在JNI代码中设置到FileDescriptorfd成员变量上
  • 关闭FileInputStream/FileOutputStream/RandomAccessFile时,会关闭底层对应的文件描述符,如果此文件描述符被多个FileInputStream/FileOutputStream/RandomAccessFile对象持有,则这些对象都会被关闭。关闭是文件底层是通过调用close系统调用实现的。

参考资料


JDK 源码阅读 : FileDescriptor(五) https://www.cppentry.com/bencandy.php?fid=76&id=170232

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring Boot 自动配置的 “魔法”.. 下一篇RocketMQ 源码学习 4 : 消息发送