首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开FileDescriptor,使用通道进行读写

打开FileDescriptor,使用通道进行读写
EN

Stack Overflow用户
提问于 2016-07-26 04:28:23
回答 1查看 855关注 0票数 1

我有一个FileDescriptor,并希望打开它的读写使用单一渠道。我可以使用这样的流来获得一个阅读通道和一个写作通道,但是我更喜欢单一的通道。

代码语言:javascript
复制
FileChannel in = new FileInputStream(fd).getChannel();
FileChannel out = new FileOutputStream(fd).getChannel();
EN

回答 1

Stack Overflow用户

发布于 2018-11-15 08:29:36

最近一直在使用FileChannel,是的,只要使用不修改通道的position的方法,就可以使用1 FileChannel进行读写。实际上,只有这样,您才能对文件有一致的视图,因为至少在刷新之前,操作系统可能会分页/缓存其他阅读器尚未“可见”的写文件。这是摘录自Javadoc

文件通道对于多个并发线程的使用是安全的。按照Channel接口的指定,可以在任何时候调用close方法。只有涉及通道位置或可以更改其文件大小的一项操作在任何给定时间都可能正在进行;在第一次操作仍在进行时发起第二次此类操作的尝试将被阻止,直到第一次操作完成为止。其他操作,特别是那些显式位置的操作,可以同时进行;它们实际上是否这样做取决于底层实现,因此没有指定。

我使用单线程写入(改变position)和多线程读取(不改变position ie )。read(ByteBuffer dst, long position))

干杯

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38581024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档