`

[java][nio]三种流获得可写/可读可写/可读的通道

阅读更多

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 包读取超大数据文件

    Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本中得到了进一步增强和完善。相较于传统的Java IO,NIO具有更高的性能和...

    Java NIO原理 图文分析及代码实现

    2. **事件触发:** 当某个事件发生时(如数据可读或可写),选择器会通知应用程序。 3. **事件处理:** 应用程序可以处理这些事件,如读取数据、发送响应等。 #### 二、Java NIO服务端和客户端代码实现 为了更好地...

    java nio im(server+client)

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种新的I/O模型,相对于传统的BIO( Blocking I/O)模型,NIO在处理高并发、大数据量的网络应用时表现出更高的效率和...

    JavaNIO想详解1

    Java NIO的Selector类就是用来实现这一功能的,它能够监视多个通道的事件,例如连接建立、数据可读或写等,当这些事件发生时,Selector会通知程序,避免了传统的轮询等待,提高了效率。 NIO库与原始的I/O库在JDK ...

    Java NIO.docx

    Channel 是 Java NIO 中的一个核心组件,它是双向的,数据可以从 Channel 读到 Buffer 中,也可以从 Buffer 写到 Channel。Channel 可以设置为非阻塞模式,此时当 Channel 从 Buffer 中读取数据时,如果有待读取的...

    java多线程nio服务器

    Java NIO(New IO)是Java 1.4版本引入的一个新特性,它为Java提供了一种不同于传统IO( Blocking I/O)的处理I/O操作的方式。传统的IO模型基于流和缓冲区,采用同步阻塞的方式,即在读写数据时会阻塞当前线程,直到...

    使用Java NIO编写高性能的服务器.doc

    Java NIO(New IO)是从JDK 1.4开始引入的一个新特性,它提供了一种不同于传统IO流的非阻塞I/O操作方式。NIO的核心在于它允许应用程序选择非阻塞的方式进行读写操作,从而提高了服务器处理大量并发连接的能力。NIO的...

    nio4

    标题中的“nio4”指的是Java NIO(Non-blocking Input/Output)的第四代技术,它在Java 7及后续版本中得到了显著的增强。NIO是一种I/O模型,与传统的阻塞I/O(BIO)相比,它允许程序进行非阻塞读写,从而提高了系统...

    java对文件的操作

    此外,Java NIO(New IO)提供了一种更高效、非阻塞的I/O模型,它引入了通道(Channels)和缓冲区(Buffers)的概念,可以同时处理多个输入/输出源,适用于大数据处理和网络编程。 总之,Java通过丰富的I/O类库支持...

    java的ServerSocketChannel与SocketChannel的使用

    `Selector`可以监视多个通道的事件(如连接就绪、数据可读、写完成等),从而让一个线程高效地管理多个通道。 总的来说,`ServerSocketChannel`和`SocketChannel`是Java NIO中处理网络通信的核心工具,它们提供了...

    学习笔记 java\CoreJava笔记\CoreJava_day21

    ### Java NIO与核心概念详解 #### 一、概述 在`CoreJava_day21`的学习笔记中,主要探讨了Java中的NIO(New I/O)包及其关键类和接口,包括`ByteBuffer`、`FileChannel`以及网络编程中常用的`ServerSocket`和`...

    java开发手册 api文档(jdk1.8中文)

    NIO(非阻塞I/O)在`java.nio`包中引入,提高了I/O性能,支持选择器和通道等高级特性。 反射是Java动态性的重要体现,`java.lang.reflect`包提供了运行时访问和修改对象、类、方法的能力。通过反射,我们可以动态...

    Java TCP/IP Socket编程

    - **Selector**:Selector用于监听多个Channel的事件,如连接到达、数据可读等。 - **Buffer详解**: - **Buffer索引**:Buffer内部有一个索引用于跟踪读写位置。 - **创建Buffer**:可以使用静态工厂方法创建...

    java程序开发工具J2SDK1.5

    在文件I/O方面,NIO(New I/O)框架在J2SDK1.5中得到加强,提供了非阻塞I/O操作和通道(Channels)的概念,这在处理大量数据流时能显著提高性能。 压缩包中的`j2sdk150b.exe`文件很可能是J2SDK1.5的安装程序,用户...

    非阻塞聊天程序

    4. **选择器(Selectors)**:选择器是NIO中的核心组件,它们可以监控多个通道的事件,如连接就绪、数据可读或可写等。通过注册感兴趣的事件到选择器,服务器端可以高效地处理多个并发连接,而无需为每个连接创建一...

    10道Java高级必备的Netty面试题!

    - AIO(异步IO):异步非阻塞IO,当有流可读或写时,系统会自动读取或写入,应用程序只需要直接使用即可,不需要等待,适用于处理大量并发连接。 2. NIO的组成: - Buffer:NIO中的数据缓冲区,用于与Channel进行...

    JDK1.6 中文API(java)

    4. **改进的I/O流**: 包括NIO.2(New I/O 2),增加了对文件系统操作的支持,如文件通道、异步I/O和文件属性查询。 5. **Swing增强**: 提供了更好的GUI组件,如JTable和JTree的改进,以及JTabbedPane的新功能。 6....

    Java 非阻塞I/O使用方法

    这里介绍一种完全基于通道的方法:利用Channels工具类将输出流封装到一个通道中: WritableByteChannel out = Channels.newChannel(System.out); 上面的代码将System.out封装入一个通道中。这之后就可以进行输出了...

Global site tag (gtag.js) - Google Analytics