`
liaokang.java
  • 浏览: 152425 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

java NIO

    博客分类:
  • java
阅读更多
    原有的I/O操作都是以字节为单位进行读写的,虽然应用时使用了很多高级流进行了封装,不需要直接去处理字节流,但是底层的实现还是离不开字节处理,原有的I/O操作是一次一个字节的处理数据,速度比较慢,此外InputStream中的read()是一种阻塞性的方法,该方法可用于从流中读取数据,但是如果数据源没有数据,它将一直等待,其它程序也不能执行。

    为解决这一问题,从JDK1.4开始提供了一系列改进I/O处理的新特性,这些新特性被称为新I/O,简称NIO,它是基于原有I/O的改进和扩展。与原有I/O不同的是,它是基于特殊缓冲区快(Buffer)进行的高效I/O操作,NIO的缓冲区与普通的缓冲区不同,它是一块连续的空间,它内存的分配不是在java的堆栈中,不受java内存回收的影响,它的实现不是纯java的代码,而是本地代码,这样操作系统可以直接与缓冲区交互,java程序只需完成对缓冲区的读写,而后续操作由操作系统完成。

    异步通道Channel是NIO另外一个重要的新特点,它不是对原有I/O类的扩展,而是完全崭新的实现,通过Channel,java应用程序能够更好地与操作系统的I/O服务结合起来,充分利用Buffer缓冲区,完成高性能的I/O操作,Channel的实现也不是纯java的,而是和操作系统紧密结合的本地代码。

    当然NIO并不是对原有I/O的替代,尽管速度快,但是由于底层借助了大量的本地代码,对操作系统和硬件平台有很大的依赖性,这就影响了java的可移植性。

下面这个例子是通过NIO对文件进行读操作
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class NIOTest {
	public static String fileReader(File fileName){
		String fileContent = null;
		FileInputStream fis = null;
		FileChannel fc = null;
		try {
			fis = new FileInputStream(fileName);
			//创建ByteBuffer缓冲区,大小可根据情况指定
			ByteBuffer bb = ByteBuffer.allocate(1024);
			//获取通道channel
			fc = fis.getChannel();
			fc.read(bb);
			fileContent = new String(bb.array());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				fc.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			} 
		}
		return fileContent;
	}
	
	public static void main(String[] args) {
		File file = new File("D:/a.txt");
		String data = fileReader(file);
		System.out.println(data);
	}
}



注意,当使用NIO读写文件,首先还需要使用IO流类,当然不是所有的IO流类都支持NIO操作的,支持NIO操作的类有FileInputStream,FileOutputStream,RandomAccessFile
分享到:
评论

相关推荐

    java NIO和java并发编程的书籍

    java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...

    java nio 包读取超大数据文件

    Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据...

    Java NIO英文高清原版

    Java NIO英文高清原版

    java nio中文版

    java NIO是 java New IO 的简称,在 jdk1.4 里提供的新 api 。 Sun 官方标榜的特性如下: – 为所有的原始类型提供 (Buffer) 缓存支持。 – 字符集编码解码解决方案。 – Channel :一个新的原始 I/O 抽象。 – 支持...

    java NIO 视频教程

    Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,...

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...

    java NIO.zip

    java NIO.zip

    java NIO 中文版

    讲解了 JavaIO 与 JAVA NIO区别,JAVA NIO设计理念,以及JDK中java NIO中语法的使用

    java nio 实现socket

    java nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socket

    Java NIO 英文文字版

    Many serious Java programmers, especially enterprise Java programmers, consider the new I/O API--called NIO for New Input/Output--the most important feature in the 1.4 version of the Java 2 Standard ...

    Java Nio selector例程

    java侧起server(NioUdpServer1.java),基于Java Nio的selector 阻塞等候,一个android app(NioUdpClient1文件夹)和一个java程序(UI.java)作为两个client分别向该server发数据,server收到后分别打印收到的消息...

    java NIO技巧及原理

    java NIO技巧及原理解析,java IO原理,NIO框架分析,性能比较

    Java NIO

    Java NIO 书籍,讲述new io特性 裴小星 译

    java nio 读文件

    java nio 读文件,java nio 读文件

    java nio proraming pdf

    java.nio (NIO stands for non-blocking I/O) is a collection of Java programming language APIs that offer features for intensive I/O operations. It was introduced with the J2SE 1.4 release of Java by ...

    JAVA NIO 学习资料

    JAVA NIO学习资料JAVA NIO学习资料

    Java NIO测试示例

    Java NIO测试示例

    java nio入门学习,两个pdf

    java nio入门学习,两个pdfjava nio入门学习,两个pdf

    Java NIO.pdf

    java nio编程 非阻塞模式的通信 电子书 带目录标签

Global site tag (gtag.js) - Google Analytics