Module  java.base
软件包  java.nio.channels

Class Channels



  • public final class Channels
    extends Object
    通道和流的实用方法。

    该类定义了支持java.io包的流类与此包的通道类的互操作的静态方法。

    从以下版本开始:
    1.4
    • 方法详细信息

      • newInputStream

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

        如果在底层通道处于非阻塞模式时调用,则产生的流的read方法将抛出IllegalBlockingModeException 流不会被缓冲,并且不支持markreset方法。 流可以安全地访问多个并发线程。 关闭流将反过来导致通道关闭。

        参数
        ch - 读取字节的通道
        结果
        一个新的输入流
      • newOutputStream

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

        如果在基础通道处于非阻塞模式时调用,则产生的流的write方法将抛出IllegalBlockingModeException 流不会被缓冲。 流可以安全地访问多个并发线程。 关闭流将反过来导致通道关闭。

        参数
        ch - 要写入字节的通道
        结果
        一个新的输出流
      • newInputStream

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

        流不会被缓冲,并且不支持markreset方法。 流可以安全地访问多个并发线程。 关闭流将反过来导致通道关闭。

        参数
        ch - 读取字节的通道
        结果
        一个新的输入流
        从以下版本开始:
        1.7
      • newOutputStream

        public static OutputStream newOutputStream​(AsynchronousByteChannel ch)
        构造将字节写入给定通道的流。

        流不会被缓冲。 流可以安全地访问多个并发线程。 关闭流将反过来导致通道关闭。

        参数
        ch - 要写入字节的通道
        结果
        一个新的输出流
        从以下版本开始:
        1.7
      • 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)
        构造一个读取器,使用给定的解码器解码来自给定通道的字节。

        所得到的流将包含至少minBufferCap个字节的内部输入缓冲区。 根据需要,流的read方法将通过从底层通道读取字节来填充缓冲区; 如果要读取字节时通道处于非阻塞模式,则将抛出IllegalBlockingModeException 所得到的流将不会被缓冲,并且不支持markreset方法。 关闭流将反过来导致通道关闭。

        参数
        ch - 从中读取字节的通道
        dec - 要使用的字符集解码器
        minBufferCap - 内部字节缓冲区的最小容量,如果要使用实现相关的默认容量, -1
        结果
        一个新的读者
      • newReader

        public static Reader newReader​(ReadableByteChannel ch,
                                       String csName)
        构造一个读取器,根据命名的字符集解码来自给定通道的字节。

        调用此方法的形式

           Channels.newReader(ch, csname)  
        表现方式与表达式完全相同
           Channels.newReader(ch, Charset.forName(csName).newDecoder(), -1)  
        参数
        ch - 读取字节的通道
        csName - 要使用的字符集的名称
        结果
        一个新的读者
        异常
        UnsupportedCharsetException - 如果在Java虚拟机的此实例中不支持命名的字符集
      • newWriter

        public static Writer newWriter​(WritableByteChannel ch,
                                       CharsetEncoder enc,
                                       int minBufferCap)
        构造一个使用给定编码器编码字符的写入器,并将生成的字节写入给定的通道。

        结果流将包含至少minBufferCap字节的内部输出缓冲区。 流的write方法将根据需要通过向基础通道写入字节来刷新缓冲区; 如果要写入字节时通道处于非阻塞模式,则将抛出IllegalBlockingModeException 所得到的流将不会被缓冲。 关闭流将反过来导致通道关闭。

        参数
        ch - 要写入字节的通道
        enc - 要使用的字符集编码器
        minBufferCap - 内部字节缓冲区的最小容量,如果要使用实现相关的默认容量, -1
        结果
        一个新作家
      • newWriter

        public static Writer newWriter​(WritableByteChannel ch,
                                       String csName)
        构造一个根据命名的字符集对字符进行编码的写入程序,并将生成的字节写入给定的通道。

        调用此方法的形式

           Channels.newWriter(ch, csname)  
        表现方式与表达式完全相同
           Channels.newWriter(ch, Charset.forName(csName).newEncoder(), -1)  
        参数
        ch - 要写入字节的通道
        csName - 要使用的字符集的名称
        结果
        一个新作家
        异常
        UnsupportedCharsetException - 如果在Java虚拟机的此实例中不支持命名的字符集