IO,NIO浅析

IO:传统的java输入输出。

1.字节流:inputstream(读),outputstream(写);

2.字节流:reader (读),writer(写)。

字符流和字节流的区别:

1.字节流读一个字节返回一个字节,字符流读取一个或者多个字节(中文用utf8编码表中对应的字节数是三个),先查询编码表再返回字符。

2.字节流可以处理所有类型的数据如mp3,图片,avi,而字符流只能处理字符数据。

如果处理纯文本数据要优先考虑使用字符流,其他都是用字节流。因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。

NIO:new io

一. 介绍NIO
NIO包(java.nio.*)引入了四个关键的抽象数据类型,它们共同解决传统的I/O类中的一些问题。
1. Buffer:它是包含数据且用于读写的线形表结构。其中还提供了一个特殊类用于内存映射文件的I/O操作。
2. Charset:它提供Unicode字符串影射到字节序列以及逆影射的操作。
3. Channels:包含socket,file和pipe三种管道,它实际上是双向交流的通道。
4. Selector:它将多元异步I/O操作集中到一个或多个线程中(它可以被看成是Unix中select()函数或Win32中WaitForSingleEvent()函数的面向对象版本)。

IO                NIO
面向流            面向缓冲
阻塞IO            非阻塞IO
无                选择器

 

posted @ 2014-08-11 17:17  脚踏实地  阅读(206)  评论(0)    收藏  举报