`

Java NIO基础知识

    博客分类:
  • NIO
阅读更多
java NIO比普通IO访问速度有较大的提高,原因是新IO所使用的结构接近于操作系统执行IO的方式:通道和缓冲器。唯一直接与通道交互的缓冲期是ByteBuffer.
参考下面的例子:

public class GetChannel {

	private static final int BSIZE=1024;
	public static void main(String[] args) throws Exception{
		FileChannel fc=new FileOutputStream("D:\\data.txt").getChannel();
		fc.write(ByteBuffer.wrap("Some text".getBytes()));
		fc.close();
		
		fc=new RandomAccessFile("D:\\data.txt","rw").getChannel();
		fc.position(fc.size());
		fc.write(ByteBuffer.wrap("Some more".getBytes()));
		fc.close();
		
		fc=new FileInputStream("D:\\data.txt").getChannel();
		ByteBuffer buff=ByteBuffer.allocate(BSIZE);
		fc.read(buff);
		
		//一旦调用read()来告知FileChannel向ByteBuffer存储字节,就
		//必须调用缓冲期上的flip(),让它做好让别人读取字节的准备
		
		buff.flip();
		while(buff.hasRemaining())
			System.out.print((char)buff.get());
		
	}
}



如果我们进一步read(),则先清空ByteBuffer,参见如下代码:
FileChannel in =new FileInputStream("aa.txt").getChannel(),
FileChannel out =new FileInputStream("aa.txt").getChannel(),
ByteBuffer buffer=ByteBuffer.allocate(1024);
while(in.read(buffer)!=-1)
{
    buffer.flip();
    out.write(buffer);
    //
    buffer.clear();
}
分享到:
评论

相关推荐

    java NIO推送实例

    1. **Java NIO基础** - **通道(Channels)**:Java NIO 提供了多种通道,如文件通道、套接字通道等,它们代表不同类型的I/O操作。 - **缓冲区(Buffers)**:数据在通道和应用程序之间传输时会存储在缓冲区中,...

    java NIO详细教程

    - **缓冲区(Buffer)**:缓冲区是Java NIO中数据读写的基础单元。根据数据类型的不同,Java NIO 提供了多种缓冲区: - **ByteBuffer**:用于基本字节数据的缓冲。 - **CharBuffer**:用于字符数据的缓冲。 - **...

    Java.NIO资源下载资源下载

    根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...

    NIO与零拷贝_javanio_nio和零拷贝_

    1. **NIO基础** - **通道(Channels)**:通道类似于流,但它是双向的,可以读也可以写。常见的通道有FileChannel、SocketChannel、ServerSocketChannel等。 - **缓冲区(Buffers)**:NIO的核心组件,用于存储...

    java-nio.rar_NIO_java nio

    1. **NIO基础** - **通道(Channels)**:NIO中的通道类似于流,但它们是双向的,可以读写数据。常见的通道类有FileChannel、SocketChannel和ServerSocketChannel等。 - **缓冲区(Buffers)**:缓冲区是数据的...

    Java语言基础教程-Java NIO流篇3

    通过以上知识点,我们可以构建出高效率、非阻塞的I/O服务,特别是在服务器端处理大量并发连接时,Java NIO的优势尤为明显。学习并掌握这些内容,能够帮助开发者编写出更加高效、可扩展的Java应用。

    JavaNio视频下载_百度云盘资源

    根据提供的文件信息,本文将围绕Java NIO(New Input/Output)的相关知识点进行详细解析,同时探讨相关的视频学习资源。 ### Java NIO简介 Java NIO(New Input/Output),即新输入输出,是Java 1.4版本引入的一个...

    Large-File-Processing-master_javanio_java大文件处理_

    本项目“Large-File-Processing-master_javanio_java大文件处理_”显然专注于通过Java NIO实现大文件处理,下面我们将详细探讨相关的知识点。 1. **Java NIO基础**:NIO的核心组件包括通道(Channels)、缓冲区...

    Java NIO.pdf

    - **基础知识**:介绍了字符集的基本概念及其在 Java 中的应用。 - **字符集类**:讲解了 `Charset` 类及其相关方法,如 `forName(String charsetName)`、`encode(CharBuffer source)` 和 `decode(ByteBuffer source...

Global site tag (gtag.js) - Google Analytics