java.nio.channels

接口
异常
java.lang.Object
  继承者 java.nio.channels.Channels

public final class Channels
     
extends Object

针对信道和流的实用工具方法。

此类定义了支持 java.io 包中的流类与此包中的信道类之间进行互操作的静态方法。

从以下版本开始:
1.4

方法摘要
static ReadableByteChannel newChannel(InputStream in)
          构造从给定流读取字节的信道。
static WritableByteChannel newChannel(OutputStream out)
          构造向给定流写入字节的信道。
static InputStream newInputStream(ReadableByteChannel ch)
          构造从给定信道读取字节的流。
static OutputStream newOutputStream(WritableByteChannel ch)
          构造向给定信道写入字节的流。
static Reader newReader(ReadableByteChannel ch, CharsetDecoder dec, int minBufferCap)
          构造一个 reader,它用给定的解码器对取自给定信道的字节进行解码。
static Reader newReader(ReadableByteChannel ch, String csName)
          构造一个 reader,它根据命名的 charset 对取自给定信道的字节进行解码。
static Writer newWriter(WritableByteChannel ch, CharsetEncoder enc, int minBufferCap)
          构造一个 writer,它使用给定的编码器对字符进行编码,并将所得的字节写入给定的信道。
static Writer newWriter(WritableByteChannel ch, String csName)
          构造一个 writer,它根据指定的 charset 对字符进行编码,并将所得的字节写入给定的信道。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

newInputStream

public static InputStream newInputStream(ReadableByteChannel ch)
构造从给定信道读取字节的流。

如果在底层信道处于非阻塞模式的同时调用所得流的 read 方法,则会抛出 IllegalBlockingModeException。不对该流进行缓冲,并且它不支持 markreset 方法。多个并发线程访问该流是安全的。关闭流依次会导致信道被关闭。

参数:
ch - 将从中读取字节的信道
返回:
新的输入流

newOutputStream

public static OutputStream newOutputStream(WritableByteChannel ch)
构造向给定信道写入字节的流。

如果在底层信道处于非阻塞模式的同时调用所得流的 write 方法,则会抛出 IllegalBlockingModeException。不对该流进行缓冲。多个并发线程访问该流是安全的。关闭流依次会导致信道被关闭。

参数:
ch - 将向其写入字节的信道
返回:
新的输出流

newChannel

public static ReadableByteChannel newChannel(InputStream in)
构造从给定流读取字节的信道。

不对所得的信道进行缓冲;只是将其 I/O 操作重定向到给定的流。关闭流会依次导致信道被关闭。

参数:
in - 从中读取字节的流
返回:
新的可读字节信道

newChannel

public static WritableByteChannel newChannel(OutputStream out)
构造向给定流写入字节的信道。

不对所得的信道进行缓冲;只是将其 I/O 操作重定向到给定的流。关闭流会依次导致信道被关闭。

参数:
out - 将向其写入字节的流
返回:
新的可写字节信道

newReader

public static Reader newReader(ReadableByteChannel ch,
                               CharsetDecoder dec,
                               int minBufferCap)
构造一个 reader,它用给定的解码器对取自给定信道的字节进行解码。

所得的流将包含一个内部输入缓冲区,其大小至少为 minBufferCap 个字节。该流的 read 方法会根据需要填充该缓冲区,方法是从底层信道读取字节;如果要读取字节时该信道处于非阻塞模式,则抛出 IllegalBlockingModeException。否则不对所得的流进行缓冲,并且也不支持 markreset 方法。关闭流依次会导致信道被关闭。

参数:
ch - 将从中读取字节的信道
dec - 要使用的 charset 解码器
minBufferCap - 内部字节缓冲区的最小容量,如果使用取决于实现的默认容量,则为 -1
返回:
新的 reader

newReader

public static Reader newReader(ReadableByteChannel ch,
                               String csName)
构造一个 reader,它根据命名的 charset 对取自给定信道的字节进行解码。

调用该方法的形式为:

 Channels.newReader(ch, csname)
与下列表达式的作用完全相同
 Channels.newReader(ch,
                    Charset.forName(csName)
                        .newDecoder(),
                    -1);

参数:
ch - 将从中读取字节的信道
csName - 要使用的 charset 的名称
返回:
新的 reader
抛出:
UnsupportedCharsetException - 如果在此 Java 虚拟机的实例中不提供对指定 charset 的支持

newWriter

public static Writer newWriter(WritableByteChannel ch,
                               CharsetEncoder enc,
                               int minBufferCap)
构造一个 writer,它使用给定的编码器对字符进行编码,并将所得的字节写入给定的信道。

所得的流将包含一个内部输出缓冲区,其大小至少为 minBufferCap 字节。该流的 write 方法会根据需要刷新该缓冲区,方法是向底层信道写入字节;如果要写入字节时该信道处于非阻塞模式,则抛出 IllegalBlockingModeException。不另外对所得的流进行缓冲。关闭流依次会导致信道被关闭。

参数:
ch - 将向其写入字节的信道
enc - 要使用的 charset 编码器
minBufferCap - 内部字节缓冲区的最小容量,如果使用取决于实现的默认容量,则为 -1
返回:
新的 writer

newWriter

public static Writer newWriter(WritableByteChannel ch,
                               String csName)
构造一个 writer,它根据指定的 charset 对字符进行编码,并将所得的字节写入给定的信道。

调用该方法的形式为:

 Channels.newWriter(ch, csname)
与下列表达式的作用完全相同
 Channels.newWriter(ch,
                    Charset.forName(csName)
                        .newEncoder(),
                    -1);

参数:
ch - 将向其写入字节的信道
csName - 所使用的 charset 的名称
返回:
新的 writer
抛出:
UnsupportedCharsetException - 如果在此 Java 虚拟机的实例中不提供对指定 charset 的支持