首页 / JAVA / java – 通道是否包装IO流?
java – 通道是否包装IO流?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 通道是否包装IO流?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1461字,纯文字阅读大概需要3分钟。
内容图文
我想知道清除概念差异的区别,因为我已经看到SocketChannel,FileChannel等类.与Socket和File I / O Streams相比
据我所知,I / O Streams必须按顺序访问,即它们是可以读写的字节序列.您还可以使用缓冲流来提高I / O的效率.
那么,与Streams相比,“频道”是一个全新的概念还是仅仅是Streams的包装器?
是的,如果我们说“Stream是一个字节序列”那么如果两者都不同,那么这个意义上的频道是什么?
解决方法:
都不是.通道不是流的包装器(除非您通过Channels.newChannel(InputStream)或Channels.newChannel(OutputStream)明确包装流)并且它们不是“全新概念”.
根据特定类型,通道仍然表示可以顺序读取或写入的字节序列.您可以通过Channels类中的工厂方法在这些API之间进行转换,这表明存在关系.
但是NIO API解决了某些设计问题,这些问题无法通过重构旧的流类(以兼容的方式)来解决.例如.基本类型现在是接口,允许某些通道同时实现多种类型,如ReadableByteChannel和WritableByteChannel.此外,没有读取单个字节的方法,这是摆脱“你可以使用BufferedStream来提高效率”神话的好方法.如果缓冲区大小不足导致I / O性能瓶颈,则首先提供一个更大的缓冲区,而不是将流或通道包装到另一个缓冲区中,从而强制它在缓冲区之间复制所有数据.因此,没有BufferedChannel.
除了顺序访问之外,像FileChannel这样的某些实现提供了允许随机访问底层资源的其他方法.这样,您可以使用统一的接口,而不是处理完全不同的API,例如RandomAccessFile / InputStream / OutputStream关系.
此外,在引入NIO时添加了许多以前缺少的I / O功能.其中一些可以在没有问题的情况下在旧类上实现,但设计者显然倾向于为所有这些使用新API,从一开始就可以在设计中考虑这些功能.
但一般来说,如上所述,与流相比,渠道并不是一个全新的概念.
内容总结
以上是互联网集市为您收集整理的java – 通道是否包装IO流?全部内容,希望文章能够帮你解决java – 通道是否包装IO流?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。