首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java nio FileChannel写方法分类

Java nio FileChannel写方法分类
EN

Stack Overflow用户
提问于 2020-11-13 10:09:13
回答 1查看 30关注 0票数 1

我有以下代码要通过文件通道编写

代码语言:javascript
复制
fc.write(bytebuffer, position);

在我提到的几个教程中,这是可以的,它可以很好地完成工作。但在javadoc https://docs.oracle.com/javase/8/docs/api/java/nio/channels/FileChannel.html#write-java.nio.ByteBuffer-long-中,此方法不返回写入的字节数。因此,我的问题是,在某些情况下,这是否可能只写入bytebuffer的一部分?我需要把它包装在一个循环中吗?这段代码有没有bug等着发生?

EN

回答 1

Stack Overflow用户

发布于 2020-11-13 10:37:45

方法FileChannel.write(...)实现了方法WritableByteChannel.write(...)。此接口可用于多种通道。WritableByteChannel.write(...)文档告诉我们:

除非另有说明,否则只有在写入所有r个请求的字节后,写入操作才会返回。根据其状态,某些类型的通道可能仅写入某些字节,或者可能根本不写入。例如,非阻塞模式下的套接字通道写入的字节数不能超过套接字输出缓冲区中可用的字节数。

但在使用FileChannel的情况下,它将始终写入并返回ByteBuffer中的剩余元素。

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

https://stackoverflow.com/questions/64814485

复制
相关文章

相似问题

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