import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
/**
*
* 从流中获得通道
* FileInputStream, FileOutputStream, RandomAccessFile
*
*/
public class GetChannel {
private static final int BSIZE = 1024;
public static void main(String[] args) throws IOException {
//写文件
FileChannel fc = new FileOutputStream("d:\\a.txt").getChannel();
fc.write(ByteBuffer.wrap("This is a test for nio.\n".getBytes()));
fc.close();
//向文件末尾添加数据
fc = new RandomAccessFile("d:\\a.txt","rw").getChannel();
//定位到文件末尾
fc.position(fc.size());
fc.write(ByteBuffer.wrap("This is the end of file.".getBytes()));
fc.close();
//读文件
fc = new FileInputStream("D:\\a.txt").getChannel();
ByteBuffer bb = ByteBuffer.allocate(BSIZE);
fc.read(bb);
//转换缓冲开关,由读转为写
bb.flip();
while(bb.hasRemaining()){
System.out.print((char)bb.get());
}
fc.close();
}
}
分享到:
相关推荐
Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本中得到了进一步增强和完善。相较于传统的Java IO,NIO具有更高的性能和...
2. **事件触发:** 当某个事件发生时(如数据可读或可写),选择器会通知应用程序。 3. **事件处理:** 应用程序可以处理这些事件,如读取数据、发送响应等。 #### 二、Java NIO服务端和客户端代码实现 为了更好地...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,相对于传统的BIO( Blocking I/O)模型,NIO在处理高并发、大数据量的网络应用时表现出更高的效率和...
Java NIO的Selector类就是用来实现这一功能的,它能够监视多个通道的事件,例如连接建立、数据可读或写等,当这些事件发生时,Selector会通知程序,避免了传统的轮询等待,提高了效率。 NIO库与原始的I/O库在JDK ...
Channel 是 Java NIO 中的一个核心组件,它是双向的,数据可以从 Channel 读到 Buffer 中,也可以从 Buffer 写到 Channel。Channel 可以设置为非阻塞模式,此时当 Channel 从 Buffer 中读取数据时,如果有待读取的...
Java NIO(New IO)是Java 1.4版本引入的一个新特性,它为Java提供了一种不同于传统IO( Blocking I/O)的处理I/O操作的方式。传统的IO模型基于流和缓冲区,采用同步阻塞的方式,即在读写数据时会阻塞当前线程,直到...
Java NIO(New IO)是从JDK 1.4开始引入的一个新特性,它提供了一种不同于传统IO流的非阻塞I/O操作方式。NIO的核心在于它允许应用程序选择非阻塞的方式进行读写操作,从而提高了服务器处理大量并发连接的能力。NIO的...
标题中的“nio4”指的是Java NIO(Non-blocking Input/Output)的第四代技术,它在Java 7及后续版本中得到了显著的增强。NIO是一种I/O模型,与传统的阻塞I/O(BIO)相比,它允许程序进行非阻塞读写,从而提高了系统...
此外,Java NIO(New IO)提供了一种更高效、非阻塞的I/O模型,它引入了通道(Channels)和缓冲区(Buffers)的概念,可以同时处理多个输入/输出源,适用于大数据处理和网络编程。 总之,Java通过丰富的I/O类库支持...
`Selector`可以监视多个通道的事件(如连接就绪、数据可读、写完成等),从而让一个线程高效地管理多个通道。 总的来说,`ServerSocketChannel`和`SocketChannel`是Java NIO中处理网络通信的核心工具,它们提供了...
### Java NIO与核心概念详解 #### 一、概述 在`CoreJava_day21`的学习笔记中,主要探讨了Java中的NIO(New I/O)包及其关键类和接口,包括`ByteBuffer`、`FileChannel`以及网络编程中常用的`ServerSocket`和`...
NIO(非阻塞I/O)在`java.nio`包中引入,提高了I/O性能,支持选择器和通道等高级特性。 反射是Java动态性的重要体现,`java.lang.reflect`包提供了运行时访问和修改对象、类、方法的能力。通过反射,我们可以动态...
- **Selector**:Selector用于监听多个Channel的事件,如连接到达、数据可读等。 - **Buffer详解**: - **Buffer索引**:Buffer内部有一个索引用于跟踪读写位置。 - **创建Buffer**:可以使用静态工厂方法创建...
在文件I/O方面,NIO(New I/O)框架在J2SDK1.5中得到加强,提供了非阻塞I/O操作和通道(Channels)的概念,这在处理大量数据流时能显著提高性能。 压缩包中的`j2sdk150b.exe`文件很可能是J2SDK1.5的安装程序,用户...
4. **选择器(Selectors)**:选择器是NIO中的核心组件,它们可以监控多个通道的事件,如连接就绪、数据可读或可写等。通过注册感兴趣的事件到选择器,服务器端可以高效地处理多个并发连接,而无需为每个连接创建一...
- AIO(异步IO):异步非阻塞IO,当有流可读或写时,系统会自动读取或写入,应用程序只需要直接使用即可,不需要等待,适用于处理大量并发连接。 2. NIO的组成: - Buffer:NIO中的数据缓冲区,用于与Channel进行...
4. **改进的I/O流**: 包括NIO.2(New I/O 2),增加了对文件系统操作的支持,如文件通道、异步I/O和文件属性查询。 5. **Swing增强**: 提供了更好的GUI组件,如JTable和JTree的改进,以及JTabbedPane的新功能。 6....
这里介绍一种完全基于通道的方法:利用Channels工具类将输出流封装到一个通道中: WritableByteChannel out = Channels.newChannel(System.out); 上面的代码将System.out封装入一个通道中。这之后就可以进行输出了...