用NIO实现简单的文件复制

public static void main(String[] args) throws IOException {
        /* 不能直接打开一个FileChannel, 须要经过使用一个InputStream、OutputStream或RandomAccessFile来获取一个FileChannel实例 */
        ReadableByteChannel readChannel = new FileInputStream("C:\\Users\\MI\\Desktop\\dev.txt").getChannel();
        WritableByteChannel writeChannel = new FileOutputStream("C:\\Users\\MI\\Desktop\\NIOTest.txt", false).getChannel();

        ByteBuffer buffer = ByteBuffer.allocate(1024);

        //没有数据可读入时返回-1
        while (-1 != (readChannel.read(buffer))) {
            /* 每次模式切换前,先调用一下flip()方法就是了 flip() 它经过操做limit和position来保证buffer中的数据被正确读写 clear() 直接将position设为0,在buffer数据没有彻底读写完时会出现数据遗漏 compact() 方法将全部未读的数据拷贝到Buffer起始处 rewind() 将position设置为0 */

            //从读切换到了写
            buffer.flip();
            //将buffer中的数据写入目标Channel
            writeChannel.write(buffer);
            //从写切换到读
            buffer.flip();
        }

        readChannel.close();
        writeChannel.close();
    }

参考连接
(NIO教程:https://www.yiibai.com/java_nio)
(NIO教程:http://ifeve.com/java-nio-all/)java

示例中只体现了: Channel 和 Buffer 的概念。还有一个重要概念:Selector。下一学习目标:基于NIO三个重要概念以及网络实现一个聊天室web