Java NIO系列教程(五) 通道之间的数据传输
2023-09-14 08:56:52 时间
原文地址:http://tutorials.jenkov.com/java-nio/scatter-gather.html
作者:Jakob Jenkov 译者:郭蕾 校对:周泰
在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel。
transferFrom()
FileChannel的transferFrom()方法可以将数据从源通道传输到FileChannel中(译者注:这个方法在JDK文档中的解释为将字节从给定的可读取字节通道传输到此通道的文件中)。下面是一个简单的例子:
方法的输入参数position表示从position处开始向目标文件写入数据,count表示最多传输的字节数。如果源通道的剩余空间小于 count 个字节,则所传输的字节数要小于请求的字节数。
此外要注意,在SoketChannel的实现中,SocketChannel只会传输此刻准备好的数据(可能不足count字节)。因此,SocketChannel可能不会将请求的所有数据(count个字节)全部传输到FileChannel中。
transferTo()
transferTo()方法将数据从FileChannel传输到其他的channel中。下面是一个简单的例子:
是不是发现这个例子和前面那个例子特别相似?除了调用方法的FileChannel对象不一样外,其他的都一样。
上面所说的关于SocketChannel的问题在transferTo()方法中同样存在。SocketChannel会一直传输数据直到目标buffer被填满。
详解,NIO中的通道(Channel) 这是 IO 相关的第三篇通道,主要讲解一下通道是什么,在 Java NIO 中的体系及使用。能被称为 NIO 中的三大组件之一作用肯定是不言而喻的,所以对于通道的掌握还是很重要的,那我们往下看把!
ali清英 方腾飞,花名清英,英文名kiral,并发编程网创始人,支付宝技术专家,《Java并发编程的艺术》作者。
相关文章
- Java详解:淘宝秒杀脚本java
- 菜鸟教程java_JAVA笔记(菜鸟教程)[通俗易懂]
- java nio_(一) Java NIO 概述[通俗易懂]
- java中applet是什么意思_Java Applet与Java Application的区别
- java编程软件下载_Ee Java(Java编程软件) V1.1.0 官方版
- java applet介绍,Java Applet教程介绍[通俗易懂]
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- native2ascii java_Native2Ascii和Ascii2Native的Java实现
- Java实用类(五) -Math类和指定范围的随机数
- java socket详解_Java Socket 编程原理及教程「建议收藏」
- JAVA英文文献_java毕业论文参考文献
- 解决Java程序连接MySQL的准确方案:Java连接MySQL的Jar包(java连接mysql的jar包)
- Java异步MySQL:开启数据处理新时代(java异步mysql)
- 删除利用Redis实现Java定时过期删除策略(redisjava过期)
- 失效Redis中Java实现失效时间设置(redisjava过期)
- 实现使用Java实现Redis过期功能(redisjava过期)
- 检查深入探索Redis与Java过期数据安全检查(redisjava过期)
- 操作Java实现Redis Key过期操作(redisjava过期)
- Java NIO系列教程(十六) Java NIO Files
- Using Java to Work with MongoDB: A Guide for Developers(java操作mongodb)
- Linux与Java结合,打造完美解决方案(linux和java)
- Java数据库之MySQL学习使用教程(mysql中java教程)
- Java技术将数据写入Oracle数据库(java写入oracle)
- java按指定编码写入和读取文件内容的类分享