遵义腾浪科技有限公司
全球国内 , 海外广告开户代运营 , ws引流推广 , kwai快手国际版广告投放
YouTube海外流量-line群发工具-Java IO 体系合作

通常进行输入输出的内容是文本内容,应该考虑使用字符流;如果是二进制内容,则应考虑使用字节流;RandomAccessFile 支持自由访问文件的任意位置。如果需要访问文件的部分内容,而不是从头读到尾,可以优先考虑 RandomAccessFile,比如文件断点续传。

Java NIO

NIO 也称新 IO 或者非阻塞 IO(Non-Blocking IO)。传统 IO 是面向输入/输出流编程的,而 NIO 是面向通道编程的。

NIO 的 3 个核心概念:Channel、Buffer、Selector。我们先来谈谈其中的两个。

Channel(通道)

Channel 是对 IO 输入/输出系统的抽象,是 IO 源与目标之间的连接通道,NIO 的通道类似于传统 IO 中的各种“流”。与 InputStream 和 OutputStream 不同的是,Channel 是双向的,既可以读,也可以写,且支持异步操作。这契合了操作系统的特性,比如 linux 底层通道就是双向的。此外 Channel 还提供了 map() 方法,通过该方法可以将“一块”数据直接映射到内存中。因此也有人说,NIO 是面向块处理的,而传统 I/O 是面向流处理的。

程序不能直接访问 Channel 中的数据,必须通过 Buffer(缓冲区)作为中介。Channel 可以直接将文件的部分或者全部映射成 Buffer。Channel 是一个接口,有多种实现类,比较常用的是 FileChannel、SocketChannel、ServerSocketChannel、DatagramChannel,分别用于文件读写,TCP 客户端、服务端网络通信、UDP 通信。

更多海外渠道请联系客服咨询合作

发布时间:2024-11-23
展开全文
拨打电话 微信咨询 发送询价