`
huobengluantiao8
  • 浏览: 1029519 次
文章分类
社区版块
存档分类
最新评论

NIO文件读写操作

 
阅读更多

/**
* 使用NIO读写文件
* 1、根据输入输出流获取相应的通道
* 2、创建缓冲区
* 3、从缓冲区读出或者写入字节流到相应的通道
* @throws Exception
*/
public void oprateFileByNio() throws Exception {

long beginTime = System.currentTimeMillis();

FileInputStream fis = new FileInputStream(srcFile);
FileOutputStream fos = new FileOutputStream(copyFile);

FileChannel inChannel = fis.getChannel(); //获取输入通道
FileChannel outChannel = fos.getChannel(); //获取输出通道

ByteBuffer mByteBuffer = ByteBuffer.allocate(1024); //分配缓冲区大小

while (true) {

mByteBuffer.clear(); //清除操作:将position设置为0,limit(限制)设置为capasity(容量)的大小

int r = inChannel.read(mByteBuffer); //将字节流从该通道读入缓冲区

//r=-1时代表已经到达流的末尾
if (r == -1) {
break;
}

mByteBuffer.flip(); //反转操作:将limit设置为当前的position,再将position设置为0

outChannel.write(mByteBuffer); //将缓冲区中字节流写入该通道

}

inChannel.close();
outChannel.close();
fis.close();
fos.close();
}

分享到:
评论

相关推荐

    java.nio新功能的优点

    java 1.4中推出的java.nio(新输入/输出)软件包允许像在其他低级语言——如C语言——中一样进行输入/输出。许多开发者认为这些新功能只能进行非阻塞操作;但是,这些新功能提供许多其他新鲜有趣的特性,它们包括:...

    Java NIO原理和使用

    Java NIO非堵塞应用通常适用用在I/O读写等方面,我们知道,系统运行的性能瓶颈通常在I/O读写,包括对端口和文件的操作上,过去,在打开一个I/O通道后,read()将一直等待在端口一边读取字节内容,如果没有内容进来,...

    Java NIO 网络编程初探

    NIO同样拥有文件读写,网络通信等IO操作,今天我们来看看NIO中的TCP网络通信的使用方法。 2. Java NIO 三大核心 Java NIO 有三大核心要素:Channel、Buffer和Selector。Java IO 的操作都是基于输入输出流的,而NIO则...

    NIO概述

    2.2 NIO概述 NIO NIO ==> New IO(新IO), ... 缓冲使用可以提供操作效率,减少不必要的读写次数 选择器 Selector 真·核心 老大 boss 2.3 Buffer Channel完成文件操作 2.3.1 常用API java.nio.Buffer Buffe

    javasnmp源码-nio-learn:JavaNIO使用示例,NIO的使用,TCP,UDP的简单示例

    NIO将以更加高效的方式进行文件的读写操作。 Java NIO与普通IO的主要区别 io nio 面向流 面向缓冲区(buffer,channel) 堵塞io 非堵塞io - 选择器 java nio主要的核心组件 缓冲区 buffer 通道 Channels 选择器 ...

    详解JavaNIO

    所以,jdk1.4发布了NIO包,NIO的文件读写设计颠覆了传统IO的设计,采用『通道』+『缓存区』使得新式的IO操作直接面向缓存区,并且是非阻塞的,对于效率的提升真不是一点两点,我们一起来看看。我们说过,NIO的核心...

    Java流NIO

    NIO于原来的IO有相同的功能,但是他们之间的使用方式是完全不同的,NIO是面向缓冲区,面向通道的的IO操作,NIO拥有更加高效的进行文件读写。 另外NIO在网络编程可以是一个无阻塞的IO交互,可以大大提升Socket交互的...

    mina:Java Nio Apache Mina Java Nio

    在以往的java的IO操作的过程中都是面向字节流操作,并且读写操作是单向的操作,而在java1.4添加nio包新的io不再像以前的标准的io操作一样面向流操作,而NIO是面向块的操作,并且有通道、缓冲区等重要的部分组成。...

    Java NIO与IO的差别和比较

    当中还提供了一个特殊类用于内存映射文件的I/O操作。  2. Charset:它提供Unicode字符串影射到字节序列以及逆影射的操作。  3. Channels:包括socket,file和pipe三种管道,它实际上是双向交流的通道。  

    通俗易懂的NIO教程(含配套资料)

    本教程为授权出品教程 本Java视频主要讲授 Java NIO 的使用及原理。Java NIO 是 JDK 1.4 发布的一套全新的IO API(New IO 简称 NIO),由于 JDK 1.7 对 NIO 的更新,...并且,NIO将以更加高效的方式进行文件的读写操作。

    java常用代码

    6.NioFile.java nio操作文件读写 7.ImageThumbnail.java 生成图片缩略图 8.JsonObjs.java json简单操作 9.HttpProxy.java 代理设置 10.CaptureScreen.java 截取桌面 11.XmlReaer.java 读写xml文件 12.ArrayConvers...

    Java性能优化之使用NIO提升性能(Buffer和Channel)

    在软件系统中,由于IO的速度要比内存慢,因此,I/O读写在很多场合都会成为系统的瓶颈。提升I/O速度,对提升系统整体性能有着很大的好处。在Java的标准I/O中,提供了基于流的I/O实现,即InputStream和OutputStream。...

    fdt:FDT是高效数据传输的应用程序,它能够以磁盘速度在广域网(使用标准TCP)上进行读写。 它是用Java编写的,可以在所有主要平台上运行,并且易于使用。 FDT基于异步,灵活的多线程系统,并使用Java NIO库的功能

    使用独立的线程在每个物理设备上进行读写操作,必要时在多个TCP流上并行传输数据。对磁盘I / O和网络使用适当大小的缓冲区,从缓冲区异步地恢复文件。恢复文件传输会话而不会丢失, FDT可以在需要时用于在网络上...

    BAT面试真题最新(涵盖全方面)

    Buffer:提供读写数据的缓存(⼈人为控制缓存的⼤大⼩小以及具体的操作) IO 和 NIO 的区别 IO是⾯面向流的,NIO是⾯面向缓冲区的。 IO是阻塞的,NIO是⾮非阻塞的。 NIO有选择器器机制,可以让⼀一个线程来监视...

    基础深化和提高-IO流技术学习大全

    I/O流技术提供了丰富的功能和特性,使得开发者能够轻松地进行文件的读写、网络通信、处理数据等操作。另外,Java还提供了一些高级的流类,如缓冲流、对象流、数据流等,它们在底层字节流和字符流的基础上提供了更多...

    NIO、BIO

     Scanner操作,文件读写操作,Socket数据传输操作…都是BIO  比如TCP群聊,私聊聊天室  Socket涉及到的IO,也是BIO  资源浪费:  1.多线程,每一个Socket会对应一个线程,如果用户量巨大,会导致线程过多,资源...

    JAVA上百实例源码以及开源项目

    Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密  Java非对称加密源程序代码实例,本例中使用RSA加密技术,...

    精通并发与netty视频教程(2018)视频教程

    74_Netty对于异步读写操作的架构思想与观察者模式的重要应用 75_适配器模式与模板方法模式在入站处理器中的应用 76_Netty项目开发过程中常见且重要事项分析 77_Java NIO Buffer总结回顾与难点拓展 78_Netty数据容器...

    精通并发与 netty 视频教程(2018)视频教程

    Channel选择器工厂与轮询算法及注册底层实现 72_Netty线程模型深度解读与架构设计原则 73_Netty底层架构系统总结与应用实践 74_Netty对于异步读写操作的架构思想与观察者模式的重要应用 75_适配器模式与模板方法模式...

Global site tag (gtag.js) - Google Analytics