Java NIO之五 通道数据传输、内存映射文件

通道数据传输 、 内存映射文件

  1. 将 Buffer 中数据写入Channel
    如: inChannel.write(buf);

  2. 从Channel读取数据到Buffer
    如:inChannel.read(buf);

  3. transferFrom() : 将数据从源通道传输到其他Channel中:
    在这里插入图片描述

  4. 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();
		
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值