这一章主要是对NIO的Channels进行说明。
1、Channels与IO Stream的区别。
主要区别如下:
- Channels是双向的,同时支持读和写数据;IO Stream是单向的,要么是读,要么是写。
- Channels是非阻塞的,读写支持异步;IO Stream是阻塞的;
- Channel将数据读入Buffer,从Buffer写入数据到Channel;
2、Channel 主要实现。
主要实现类如下:
- FileChannel:支持从文件读写数据。
- DatagramChannel:支持从UDP协议读写数据。
- SocketChannel:支持从TCP协议读写数据。
- ServerSocketChannel:监听所有的TCP请求连接,连接成功,将会创建一个SocketChannel。
3、Channel 的简单例子。
以下是使用Channel读取文件内容的简单例子:
public static void readFile(String filePath) throws IOException { //get FileChannel RandomAccessFile aFile = new RandomAccessFile(filePath, "rw"); FileChannel inChannel = aFile.getChannel(); //initial ByteBuffer。 ByteBuffer buf = ByteBuffer.allocate(48); //read data into Buffer int bytesRead = inChannel.read(buf); while (bytesRead != -1) { System.out.println("Read " + bytesRead); buf.flip(); //read data from Buffer。 while(buf.hasRemaining()){ System.out.print((char) buf.get()); } buf.clear(); bytesRead = inChannel.read(buf); } aFile.close(); }
相关推荐
### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...
Java NIO库提供了多种实现,如`java.nio.channels`包下的各种Channel和Selector类,以及`java.nio`包下的Buffer类。 在学习NIO时,首先需要理解Channel、Buffer、Selector的基本概念和使用方法,然后通过实例来熟悉...
import java.nio.channels.FileChannel; public class CopyFile { public static void main(String[] args) throws Exception { String infile = "C:\\copy.sql"; String outfile = "C:\\copy.txt"; ...
JAVA学习笔记是一个全面涵盖JAVA编程基础到进阶的资源集合,特别适合初学者掌握JAVA语言和项目开发技术。笔记内容包括了几个核心领域,如编程思想、多线程设计模式、网络编程,以及JAVA的新输入/输出(NIO)系统。 ...
5. **NIO.2(New I/O API)**:提供了非阻塞I/O操作,增强了文件系统操作的性能,例如Path类、Files类和Channels。 6. **Scripting API**:Java 6引入了JSR 223,允许在Java应用中嵌入脚本语言,如JavaScript,增强...
Java学习笔记第四部分主要涵盖了Java编程语言的深入学习内容,可能是继基础语法、面向对象编程之后的高级主题。"良葛格"作为编著者,可能以易懂且实用的方式阐述了这些概念。以下是根据标题和描述可能包含的知识点:...
通过《良葛格Java JDK 5.0学习笔记》,初学者可以全面了解这些新特性的概念、用法以及如何在实际项目中应用。这些知识对于理解和掌握现代Java编程至关重要,也是Java程序员必须掌握的基础技能。
Java JDK 5.0是Java开发的一个里程碑版本,它引入了许多重要的新特性和改进,显著提升了编程效率和..."良葛格Java JDK 5.0学习笔记04"可能涵盖了其中的一些内容,详细解读ch04.pdf文件将有助于深入理解这些关键知识点。
【Java IO操作详解】 在Java编程中,IO(Input/Output)操作是处理数据输入与输出的核心技术。Java-IO操作共19页的笔记详细介绍了这一关键领域,旨在帮助...这19页的学习笔记将是你掌握Java IO操作的重要参考资料。
NIO的`Channels`和`Buffers`与传统的流有所不同,但同样强大。 总结来说,Java IO流是Java平台的核心特性,它涵盖了数据输入输出的各个方面。通过理解流的分类、工作原理以及如何与其他Java工具配合,你将能够编写...
- NIO(New IO)的介绍,包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。 6. **多线程**: - 创建线程的两种方式:继承Thread类和实现Runnable接口。 - 线程同步机制,如synchronized关键字、...
### Netty学习笔记知识点概述 #### 一、Netty简介 Netty是一个广泛使用的高性能、异步事件驱动的网络应用程序框架,它简化了网络编程的复杂性,使得开发者能够更轻松地开发高性能、高可靠性的网络服务器和客户端。...
Java学习笔记涵盖了多个核心概念和实战应用,这些文件名揭示了Java编程中的一些关键主题。以下是对这些知识点的详细说明: 1. **SelectorUtils.java**:这个文件可能包含自定义的`Selector`工具类,`Selector`在...
在压缩包的文件列表中,有两个文件名都包含“Java NIO 选择器(Selector) 知识预备 (linux poll)”,这表明压缩包里的内容是关于Java NIO选择器的详细教程或笔记。NIO(New I/O)是Java提供的一种I/O模型,与传统的...
JavaSE 7引入了NIO(Non-blocking Input/Output)提供了一种更高效的IO处理模式,包括通道(Channels)和缓冲区(Buffers)的概念。 JavaSE还包含了大量的标准库,如JDBC(Java Database Connectivity)用于数据库...
`java.nio.channels.Selector`和`java.nio.channels.ServerSocketChannel`可以用来监听多个连接,提高了服务器的并发性能。 8. **TCP选项与套接字参数**:`Socket`类提供了设置TCP选项的方法,如`setTcpNoDelay()`...
3. **java.nio.*** 包:非阻塞I/O模型,提供更高效的IO操作,如`ByteBuffer`、`Channels`和`Selectors`。 4. **java.lang.reflect.*** 包:反射机制,允许运行时动态访问和修改类、接口、字段和方法。这对于实现元...
5. **IO/NIO**:Java NIO(New Input/Output)提供了非阻塞的I/O操作,包括通道(Channels)和缓冲区(Buffers)。 6. **注解(Annotations)**:自定义注解,元注解,以及注解在编译期和运行期的处理。 7. **设计...