Java Nio 十七

2017/05/30 Java

Java NIO 十七

通道工具类

NIO 通道提供了一个全新的类似流的 I/O 隐喻,一个工具类(java.nio.channels.Channels )定义了几种静态的工厂方法以使通道可以更加容易地同流和读写器互联。

工具方法汇总

方法 返回 描述
newChannel(InputStream in) ReadableByteChannel 返回一个将从给定的输入流读取数据的通道
newChannel (OutputStream out) newChannel (OutputStream out) 返回一个将向给定的输出流写入
数据的通道    
newInputStream (ReadableByteChannel ch) InputStream 返回一个将从给定的通道读取字
节的流    
newOutputStream (WritableByteChannel ch) OutputStream 返回一个将向给定的通道写入字
节的流    
newReader (ReadableByteChannel ch, CharsetDecoder dec, int minBufferCap) Reader 返回一个 reader,它将从给定的 通道读取字节并依据提供的CharsetDecoder 对读取到的字节 进行解码
newReader(ReadableByteChannel ch, String csName) Reader 返回一个 reader,它将从给定的 通道读取字节并依据提供的字符 集名称将读取到的字节解码成字符
newWriter (WritableByteChannel ch, CharsetEncoder dec, int minBufferCap) Writer 返回一个 writer,它将使用提供 的 CharsetEncoder 对象对字符编 码并写到给定的通道中
newWriter (WritableByteChannel ch, String csName) Writer 返回一个 writer,它将依据提供 的字符集名称对字符编码并写到 给定的通道中

常规的流仅传输字节,readers 和 writers 则作用于字符数据。Readers 和 Writers 运行在字符的基础上,在 Java 的世界里字符同字节是完全不同的。将一个通道(仅了解字节)连接到一个 reader 或 writer 需要一个转换器来处理字节/字符 (byte/char)阻抗失配。

这些方法返回的 Channel 对象可能会也可能不会实现 InterruptibleChannel 接口,它们也可能不是从 SelectableChannel 引申而来,需要使用操作器实例测试一下返回的通道对象。

Show Disqus Comments

Search

    Table of Contents