java.lang.Object java.nio.channels.Channels
public final class Channels
针对信道和流的实用工具方法。
此类定义了支持 java.io
包中的流类与此包中的信道类之间进行互操作的静态方法。
方法摘要 | |
---|---|
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 |
方法详细信息 |
---|
public static InputStream newInputStream(ReadableByteChannel ch)
如果在底层信道处于非阻塞模式的同时调用所得流的 read 方法,则会抛出 IllegalBlockingModeException
。不对该流进行缓冲,并且它不支持 mark
或 reset
方法。多个并发线程访问该流是安全的。关闭流依次会导致信道被关闭。
ch
- 将从中读取字节的信道
public static OutputStream newOutputStream(WritableByteChannel ch)
如果在底层信道处于非阻塞模式的同时调用所得流的 write 方法,则会抛出 IllegalBlockingModeException
。不对该流进行缓冲。多个并发线程访问该流是安全的。关闭流依次会导致信道被关闭。
ch
- 将向其写入字节的信道
public static ReadableByteChannel newChannel(InputStream in)
不对所得的信道进行缓冲;只是将其 I/O 操作重定向到给定的流。关闭流会依次导致信道被关闭。
in
- 从中读取字节的流
public static WritableByteChannel newChannel(OutputStream out)
不对所得的信道进行缓冲;只是将其 I/O 操作重定向到给定的流。关闭流会依次导致信道被关闭。
out
- 将向其写入字节的流
public static Reader newReader(ReadableByteChannel ch, CharsetDecoder dec, int minBufferCap)
所得的流将包含一个内部输入缓冲区,其大小至少为 minBufferCap 个字节。该流的 read 方法会根据需要填充该缓冲区,方法是从底层信道读取字节;如果要读取字节时该信道处于非阻塞模式,则抛出 IllegalBlockingModeException
。否则不对所得的流进行缓冲,并且也不支持 mark
或 reset
方法。关闭流依次会导致信道被关闭。
ch
- 将从中读取字节的信道
dec
- 要使用的 charset 解码器
minBufferCap
- 内部字节缓冲区的最小容量,如果使用取决于实现的默认容量,则为
-1
public static Reader newReader(ReadableByteChannel ch, String csName)
调用该方法的形式为:
与下列表达式的作用完全相同Channels.newReader(ch, csname)
Channels.newReader(ch, Charset.forName(csName) .newDecoder(), -1);
ch
- 将从中读取字节的信道
csName
- 要使用的 charset 的名称
UnsupportedCharsetException
- 如果在此 Java 虚拟机的实例中不提供对指定 charset 的支持
public static Writer newWriter(WritableByteChannel ch, CharsetEncoder enc, int minBufferCap)
所得的流将包含一个内部输出缓冲区,其大小至少为 minBufferCap 字节。该流的 write 方法会根据需要刷新该缓冲区,方法是向底层信道写入字节;如果要写入字节时该信道处于非阻塞模式,则抛出 IllegalBlockingModeException
。不另外对所得的流进行缓冲。关闭流依次会导致信道被关闭。
ch
- 将向其写入字节的信道
enc
- 要使用的 charset 编码器
minBufferCap
- 内部字节缓冲区的最小容量,如果使用取决于实现的默认容量,则为
-1
public static Writer newWriter(WritableByteChannel ch, String csName)
调用该方法的形式为:
与下列表达式的作用完全相同Channels.newWriter(ch, csname)
Channels.newWriter(ch, Charset.forName(csName) .newEncoder(), -1);
ch
- 将向其写入字节的信道
csName
- 所使用的 charset 的名称
UnsupportedCharsetException
- 如果在此 Java 虚拟机的实例中不提供对指定 charset 的支持