陆小曼|Java IO,讲的实在是太好了,这篇( 八 )


通道(Channel)上面我们介绍过 , 通道是作为一种连接资源 , 作用是传输数据 , 而真正存储数据的是缓冲区 , 所以介绍完缓冲区后 , 我们来学习通道这一块 。
通道是可以双向读写的 , 传统的BIO需要使用输入/输出流表示数据的流向 , 在NIO中可以减少通道资源的消耗 。
IO通道类型具体类文件IOFileChannel(用于文件读写、操作文件的通道)TCP网络IOSocketChannel(用于读写数据的TCP通道)、ServerSocketChannel(监听客户端的连接)UDP网络IODatagramChannel(收发UDP数据报的通道)
可以通过getChannel()方法获取一个通道 , 支持获取通道的类如下:
文件IO:FileInputStream、FileOutputStream、RandomAccessFileTCP网络IO:Socket、ServerSocketUDP网络IO:DatagramSocket示例:文件拷贝案例我们来看一个利用通道拷贝文件的例子 , 需要下面几个步骤:
打开原文件的输入流通道 , 将字节数据读入到缓冲区中打开目的文件的输出流通道 , 将缓冲区中的数据写到目的地关闭所有流和通道(重要!)这是一张小菠萝的照片 , 它存在于d:小菠萝文件夹下 , 我们将它拷贝到d:小菠萝分身文件夹下 。
BIO和NIO拷贝文件的区别这个时候就要来了解了解操作系统底层是怎么对IO和NIO进行区别的 , 我会用尽量通俗的文字带你理解 , 可能并不是那么严谨 。