JAVA培训:什么是NIO?
Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。
、NIO 简介
NIOJava New IO的简称,在jdk1.4里提供的新api。Sun官方标榜的特性如下:
1. 为所有的原始类型提供 (Buffer) 缓存支持。
2. 字符集编码解码解决方案。
3. Channel:一个新的原始 I/O 抽象。
4. 支持锁和内存映射文件的文件访问接口。
5. 提供多路 (non-bloking) 非阻塞式的高伸缩性网络I/O。
Channel和Buffer
Channel和Buffer是 NIO 中的核心对象,几乎在每一个 I/O 操作中都要使用它们。
Channel是对原 I/O 包中的流的模拟。到任何目的地(或来自任何地方)的所有数据都必须通过一个 Channel 对象。一个 Buffer 实质上是一个容器对象。发送给一个通道的所有对象都必须首先放到缓冲区中;同样地,从通道中读取的任何数据都要读到缓冲区中。
Buffer 是一个对象, 它包含一些要写入或者刚读出的数据。 在 NIO 中加入 Buffer 对象,体现了新库与原 I/O 的一个重要区别。在面向流的 I/O 中,您将数据直接写入或者将数据直接读到 Stream 对象中。在 NIO 库中,所有数据都是用缓冲区处理的。在读取数据时,它是直接读到缓冲区中的。在写入数据时,它是写入到缓冲区中的。任何时候访问 NIO 中的数据,您都是将它放到缓冲区中。缓冲区实质上是一个数组。通常它是一个字节数组,但是也可以使用其他种类的数组。但是一个缓冲区不 仅仅 是一个数组。缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。
、文件制操作示例
java培训怎么学面是一个文件复制操作的程序代码:
public class CopyFile { 
    public static void main(String[] args) throws Exception { 
        String infile = "C:\\"; 
        String outfile = "C:\\"; 
        // 获取源文件和目标文件的输入输出流 
        FileInputStream fin = new FileInputStream(infile); 
        FileOutputStream fout = new FileOutputStream(outfile); 
        // 获取输入输出通道 
        FileChannel fcin = Channel(); 
        FileChannel fcout = Channel(); 
        // 创建缓冲区 
        ByteBuffer buffer = ByteBuffer.allocate(1024); 
        while (true) { 
            // clear方法重设缓冲区,使它可以接受读入的数据 
            buffer.clear(); 
            // 从输入通道中将数据读到缓冲区 
            int r = ad(buffer); 
            // read方法返回读取的字节数,可能为零,如果该通道已到达流的末尾,则返回-1 
            if (r == -1) { 
                break; 
            } 
            // flip方法让缓冲区可以将新读入的数据写入另一个通道 
            buffer.flip(); 
            // 从输出通道中将数据写入缓冲区 
            fcout.write(buffer); 
        } 
    } 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。