模块  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))  
        参数
        ch - 将从中读取字节的通道
        csName - 要使用的charset的名称
        结果
        一个新的读者
        异常
        UnsupportedCharsetException - 如果在此Java虚拟机实例中不支持指定的charset
      • newReader

        public static Reader newReader​(ReadableByteChannel ch,
                                       Charset charset)
        构造一个读取器,根据给定的字符集解码给定通道的字节。

        调用此方法的形式

           Channels.newReader(ch, charset)  
        行为与表达式完全相同
           Channels.newReader(ch, Charset.forName(csName).newDecoder(), -1)  

        读者对格式错误输入和不可映射字符错误的默认操作是report 当需要更多地控制错误处理时,应该使用采用CharsetDecoder的构造函数。

        参数
        ch - 将从中读取字节的通道
        charset - 要使用的字符集
        结果
        一个新的读者
      • 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))  
        参数
        ch - 要写入字节的通道
        csName - 要使用的charset的名称
        结果
        一位新作家
        异常
        UnsupportedCharsetException - 如果在此Java虚拟机实例中不支持指定的charset
      • newWriter

        public static Writer newWriter​(WritableByteChannel ch,
                                       Charset charset)
        构造一个编写器,根据给定的字符集对字符进行编码,并将结果字节写入给定的通道。

        调用此方法的形式

           Channels.newWriter(ch, charset)  
        行为与表达式完全相同
           Channels.newWriter(ch, Charset.forName(csName).newEncoder(), -1)  

        作者对格式错误输入和不可映射字符错误的默认操作是report 当需要更多地控制错误处理时,应该使用采用CharsetEncoder的构造函数。

        参数
        ch - 要写入字节的通道
        charset - 要使用的字符集
        结果
        一位新作家