使用直接缓冲区完成文件的复制(内存映射文件)

package com.cppdy.nio;

import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption; //使用直接缓冲区完成文件的复制(内存映射文件)
public class NIOBufferDemo2 { public static void main(String[] args) throws Exception { //直接缓冲区
FileChannel inChannel = FileChannel.open(Paths.get("F:\\cppdy\\1.jpg"), StandardOpenOption.READ);
FileChannel outChannel = FileChannel.open(Paths.get("F:\\cppdy\\2.jpg"), StandardOpenOption.READ,StandardOpenOption.WRITE,StandardOpenOption.CREATE);
//缓冲区
MappedByteBuffer inMap = inChannel.map(MapMode.READ_ONLY, 0, inChannel.size());
MappedByteBuffer outMap = outChannel.map(MapMode.READ_WRITE, 0, inChannel.size()); //直接对缓冲区进行数据读写操作
byte[] bytes=new byte[inMap.limit()]; inMap.get(bytes);
outMap.put(bytes);
outMap.clear();
System.out.println("复制完毕");
} }

NIO(三)的更多相关文章

  1. java学习-NIO(三)Channel

    通道(Channel)是java.nio的第二个主要创新.它们既不是一个扩展也不是一项增强,而是全新.极好的Java I/O示例,提供与I/O服务的直接连接.Channel用于在字节缓冲区和位于通道另 ...

  2. 《精通并发与Netty》学习笔记(12 - 详解NIO (三) SocketChannel、Pipe)

    一.SocketChannelJava NIO中的SocketChannel是一个连接到TCP网络套接字的通道.可以通过以下2种方式创建SocketChannel: 打开一个SocketChannel ...

  3. NIO(三):Selector选择器

    一.堵塞式与非堵塞式 在传统IO中,将数据由当前线程从客户端传入服务端,由服务端的内核进行判断传过来的数据是否合法,内核中是否存在数据. 如果不存在数据 ,并且数据并不合法,当前线程将会堵塞等待.当前 ...

  4. NIO(四、Selector)

    目录 NIO(一.概述) NIO(二.Buffer) NIO(三.Channel) NIO(四.Selector) Selector 前面两个章节都描述了Buffer和Channel,那这个章节就描述 ...

  5. Java NIO工作机制简介

    前言 本博客只简单介绍NIO的原理实现和基本工作流程 I/O和NIO的本质区别 NIO将填充和提取缓冲区的I/O操作转移到了操作系统 I/O 以流的方式处理数据,而 NIO 以缓冲区的方式处理数据:I ...

  6. netty源码解解析(4.0)-14 Channel NIO实现:读取数据

     本章分析Nio Channel的数据读取功能的实现. Channel读取数据需要Channel和ChannelHandler配合使用,netty设计数据读取功能包括三个要素:Channel, Eve ...

  7. Java面试总结之AIO与NIO

    1.Java NIO 是一种同步非阻塞的I/O模型 将多个IO的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下处理多个客户端请求. NIO三个核心对象:通道(Channel).缓冲 ...

  8. Java NIO 详解(二)

    异步IO 异步 I/O 是一种没有阻塞地读写数据的方法.通常,在代码进行 read() 调用时,代码会阻塞直至有可供读取的数据.同样, write()调用将会阻塞直至数据能够写入,关于同步的IO请参考 ...

  9. 第二章 BIO与NIO

    <netty权威指南>读书笔记 一.BIO 1.服务端程序: package bio; import java.io.BufferedReader; import java.io.IOEx ...

  10. Java IO:BIO和NIO差别及各自应用场景

    转载请注明出处:jiq•钦's technical Blog - 季义钦 引言 BIO和NIO是两种不同的网络通信模型,现现在NIO已经大量应用在Jetty.ZooKeeper.Netty等开源框架中 ...

随机推荐

  1. 【vue】中 $listeners 的使用方法

    $listeners 的官方介绍: 包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器.它可以通过 v-on="$listeners" 传入内部组件——在 ...

  2. 5-24 css内容的补充

    1,标准文档流 宏观的将,我们的web页面和ps等设计软件有本质的区别,web 网页的制作,是个“流”,从上而下 ,像 “织毛衣”.而设计软件 ,想往哪里画东西,就去哪里画 标准文档流下 有哪些微观现 ...

  3. ASP.NET EF 延迟加载,导航属性延迟加载

    ASP.NET EF 延迟加载,导航属性延迟加载   EF(EntityFramework)原理:属于ORM的一种实现 通过edmx文件来查看三部分:概念模型,数据模型,映射关系,上下文DbConte ...

  4. javascript数据类型和常用内置对象(重要!)

    数据类型:w3c undefind  null  string  number  boolean  Array   object 常用内置javascript对象: Array对象:Date对象:正则 ...

  5. git关联了无用的,取消关联,并重置gitignore

    一定要在首次上传git之前配置好 ignore文件假如操作问题不小心点了studio中可视化界面的git add . -f (强制的关联所有)这时候如果你看小git status 所有的文件都进行了远 ...

  6. java ==、equals、hashcode有什么区别

    1.== 用来比较两个对象的存储空间 2.equals是Object类提供的方法之一,每个java类都继承Object类,所以每一个对象都具有equals方法,所以在没有覆盖equals方法的情况下, ...

  7. 20165325 2017-2018-2 《Java程序设计》第七周学习总结

    一.教材学习笔记 ch11 1.连接数据库 2.条件与排序查询: where子语句 一般格式:select 字段 from 表名 where 条件 排序:用order by子语句对记录排序 3.更新. ...

  8. Bringing Native Performance to Electron

    Bringing Native Performance to Electron https://realm.io/blog/native-performance-electron-realm/ Rea ...

  9. Git学习笔记02-创建版本库

    版本库就是一个目录,这个目录里面的所有文件都会被Git管理,每个文件的修改,删除都能追踪.以便在某个时刻追踪历史记录,或者还原 路径切换,查看文件命令和linux差不多,cd 文件路径  ls查看路径 ...

  10. 设计模式C++学习笔记之二十(完结篇 & 面向对象原则)设计模式C++实例下载

      Prototype(原型模式) 20.1.解释 概念:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. main(),客户 ICloneableNow,只有一个接口Clone CM ...