文章目录
通道数据传输 、 内存映射文件
-
将 Buffer 中数据写入Channel
如: inChannel.write(buf); -
从Channel读取数据到Buffer
如:inChannel.read(buf); -
transferFrom() : 将数据从源通道传输到其他Channel中:
-
transferTo() : 将数据从源通道传输到其他Channel中:
/*
* 一、通道(Channel):用于资源节点与目标节点的连接。
* 在Java NIO 中负责缓冲中数据的传去。
* Channel本身不存储数据,需要配合缓冲区进行传输。
*
* 二、通道的主要实现类
* java.nio.channels.Channel 接口:
* |--FileChannel :
* |--SokectChannel
* |--SeverSocketChannel
* |--DatagramChannel
*
*三、获取通道
*1. Java 针对支持通道的类提供了getChannel()方法
* 本地IO操作
* FileInputStream/FileOutStream
* RandomAccessFile
*
* 网络IO:
* Socket
* ServerSocket
* DatagramSocket
*
*2.在 JDK 1.7 中的NIO.2针对各个通道提供了一个静态方法open()
*3.在 JDK 1.7 中的NIO.2的Files 工具类的newByteChannel()
*
*四、通道之间的数据传输
*transferFrom()
*transferTo()
*/
public class TestChannel {
//通道之间的数据传输(直接缓冲区的方式)
@Test
public void test3() {
long start = System.currentTimeMillis();
FileChannel readChannel = null;
FileChannel writeChannel = null;
try {
readChannel = FileChannel.open(Paths.get("1.jpg"), StandardOpenOption.READ);
writeChannel = FileChannel.open(Paths.get("5.jpg"), StandardOpenOption.WRITE,StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);
// readChannel.transferTo(0, readChannel.size(), writeChannel);
writeChannel.transferFrom(readChannel, 0, readChannel.size());
} catch (IOException e) {
e.printStackTrace();
}finally {
if(readChannel != null) {<