原文http://tutorials.jenkov.com/java-nio/channels.html
Java NIO通道(Channel)与流(streams)有些类似,但还是有所差异:
(1):通道你既可以写也可以读,而流只能一种方式(读或者写)。
(2):通道可以异步的读写。
(3):通道只能从缓冲区里进行读写。
如上所述,你可以从通道里将数据读入到缓冲区里,也可以从缓冲区里将数据写入到通道。图示如下:
Channel Implementations(通道的实现)
Java NIO最重要的通道实现如下:
- FileChannel
- DatagramChannel
- SocketChannel
- ServerSocketChannel
FileChannel从文件里读取数据
DatagramChannel可以通过网络协议UDP进行读写
SocketChannel可以通过网络协议TCP进行读写
ServerSocketChannel 允许你监听进来的TCP连接,例如web服务。每个进来的连接将会创建一个SocketChannel。
Basic Channel Example(基础通道实例)
RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw"); FileChannel inChannel = aFile.getChannel(); ByteBuffer buf = ByteBuffer.allocate(48); int bytesRead = inChannel.read(buf); while (bytesRead != -1) { System.out.println("Read " + bytesRead); buf.flip(); while(buf.hasRemaining()){ System.out.print((char) buf.get()); } buf.clear(); bytesRead = inChannel.read(buf); } aFile.close();
注意buf.flip()调用。首先你将数据读入到缓冲区(buffer),然后切换到读模式。你就可以读取出数据。我将在下一章缓冲区(buffer)做更详细的描述。
相关推荐
05-Java NIO-Channel-FileChannel详解(一).mp4 06-Java NIO-Channel-FileChannel详解(二).mp4 08-Java NIO-Channel-ServerSocketChannel.mp4 09-Java NIO-Channel-SocketChannel.mp4 10-Java NIO-Channel-...
在课程中,第4节将详细讲解Java NIO的通道概念,特别是`Channel`接口及其主要实现类。例如,FileChannel用于文件操作,它支持映射文件到内存(Memory-Mapped File)以提高读写速度;SocketChannel则用于网络通信,...
在Java NIO流篇1的学习中,我们将深入探讨NIO的核心概念和使用方法。 首先,我们从【第1节】 Java NIO流-简介和概述开始。这一部分主要介绍了NIO的基本理念和相对于BIO的优势。NIO的核心特点是它支持非阻塞I/O,这...
Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六) Selector Java NIO系列教程(七) ...
Java NIO的ByteBuffer是Java标准库提供的一个核心类,它是通道(Channel)和缓冲区(Buffer)之间数据传输的主要媒介。它允许我们直接在内存中操作数据,而无需频繁地进行磁盘或网络I/O操作,提高了程序性能。ByteBuffer...
2. Java NIO的基本组件,如通道(Channel)、缓冲区(Buffer)、选择器(Selector)以及如何使用它们来实现非阻塞I/O。 3. 聊天室应用的设计模式,包括服务器端和客户端的架构,以及如何处理并发连接和消息广播。 4....
在"2021最新-Java NIO视频教程.txt打包整理.zip"这个资源中,你可能学习到如何创建和管理通道、缓冲区的使用、选择器的注册与选择、文件系统操作的优化、字符集编码的处理以及如何利用NIO进行网络编程等内容。...
Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种不同于传统IO(基于字节流和字符流)的I/O操作方式。传统的IO模型是阻塞式的,而NIO的核心特点是非阻塞,这使得在处理大量并发I/O请求时更为高效。...
总的来说,Java NIO在实现阻塞多线程通信时,通过`Selector`监控多个`Channel`,减少了线程的创建和管理,提高了系统资源的利用率。同时,`ByteBuffer`的使用降低了内存拷贝的开销,提升了性能。通过`EchoServer`和`...
学习Netty,可以从基础的Socket编程开始,然后深入理解Java NIO的基本概念,接着熟悉Netty提供的各种组件和API,通过编写简单的服务端和客户端程序来实践。随着对Netty的理解加深,可以尝试实现更复杂的网络应用,如...
### Java NIO 系列教程知识点详解 #### 一、Java NIO 概述 Java NIO (New IO) 是 Java SE 1.4 版本引入的一种新的输入/输出方式,它提供了一种替代传统的 Java IO 包的方式。Java NIO 主要包括三个核心组成部分:*...
教程内容涵盖:阻塞和非阻塞IO、Channel通道、Buffer缓冲区、Selector选择器、Pipe管道、FileLock文件锁,以及Path、Files、异步FileChannel和Charset字符编码等,并通过一个多人聊天室的综合案例,把所有的NIO知识...
Java NIO(New Input/Output)是Java标准库在JDK 1.4版本中引入的一个新特性,它提供了一种不同于传统IO流的高效I/O处理方式。NIO的核心概念包括通道(Channel)和缓冲区(Buffer),这两个组件使得数据以块的形式...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从JDK 1.4版本开始引入的一种新的IO模型,它为Java应用程序提供了更高效的数据传输方式,尤其适用于高并发、大数据量的网络服务。与传统的IO...
在Java传统IO中,数据的读写都是通过流来完成,而NIO则引入了通道(Channel)和缓冲区(Buffer)的概念,提供了一种非阻塞的I/O操作方式,极大地提高了Java进行并发I/O处理的能力。 首先,我们来看下NIO的核心组件...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。...学习和理解Java NIO以及Netty的使用,对于提升Java网络编程的能力至关重要。
NIO的核心概念包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。通道可以读写数据,缓冲区用于临时存储数据,选择器则用于监听多个通道的事件,实现了多路复用,从而实现非阻塞I/O。 3. **HttpCore NIO...