09
Java NIO 简明教程 之 Java NIO 通道之间的数据传输(Channel to Channel Transfers)
在 Java NIO 中你可以从一个通道向另一个通道直接传输数据,如果一个 channel 是 FileChannel 类型的,那么他可以直接把数据传输到另一个 channel。逐个特性得益于FileChannel 类包含的 transferTo() 和 transferFrom() 两个方法。
在 Java NIO 中你可以从一个通道向另一个通道直接传输数据,如果一个 channel 是 FileChannel 类型的,那么他可以直接把数据传输到另一个 channel。逐个特性得益于FileChannel 类包含的 transferTo() 和 transferFrom() 两个方法。
Java NIO 内置了scatter/gather(分散/聚合)的支持,分散/聚合时通过通道(Channel)读写数据的两个概念。
分散读(Scattering read)是指从通道(Channel)中读取操作时将读取的数据写入多个缓冲区(Buffer)中,也就是 Scatter 代表了数据从通道(Channel)到多个缓冲区(Buffer)的过程。
Java NIO Buffers 和 NIO Channel 一起使用。正如你所知,数据从通道(channel)中读取到缓冲区(buffers),或从缓冲区(buffer)把数据写入到通道(channels) .
本文是基于《Java 开发手册》 1.5.0 华山版整理而来,《Java 开发手册》的前身是阿里巴巴集团技术团队推出的
《阿里巴巴Java开发手册》以及《码出高效:Java开发手册》,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册。
Java NIO Channels 和 流(Streams)非常相似,但还是有一些区别:
最近在整理 Java NIO 相关的资料,发现了 Jakob Jenkov 2014年写的 Java NIO Tutorial 教程,概念讲的非常透彻、浅显易懂,值得作为 Java NIO 学习的推荐材料。
本文参考了CSDN博主 ThinkWon 整理发布的 《Java基础知识面试题(2020最新版)》,在该文的基础上并汇总整理了网络相关资源,在整理的过程中对原文进行了验证和补充、以及多处的修正和解读等,旨在能更好的服务于广大读者。