Java IO

1、概念

Java将数据从源(文件、内存、键盘、网络)读入到内存 中,形成了流,然后将这些流还可以写到另外的目的地(文件、内存、控制台、网络),之所以称为流,是因为这个数据序列在不同时刻所操作的是源的不同部分。

2、分类

按照不同的分类标准,IO流分为不同类型。主要有以下几种方式:按照数据流方向、数据处理的单位和功能。还有一些分类比如:对象流、缓冲流、压缩流、文件流等等。其实都是节点流和处理流的子分类。不管流的分类是多么的丰富和复杂,其根源来自于四个基本的类。这个四个类的关系如下:

 

 

字节流

字符流

输入流

InputStream

Reader

输出流

OutputStream

Writer

2.1输入流与输出流。

数据从内存到硬盘,通常认为是输出流,即写操作;相反,从硬盘到内存,通常认为是输入流,即读操作;这里的输入、输出是从内存的角度划分的。

2.2字节流和字符流

字节流和字符流区别非常简单,它们的用法几乎一样。区别在于字节流和字符流所处理的最小数据单元不同。

 

处理最小数据单元

基类

字节流

8

In/OutStream

字符流

16

Reader/writer

3.3节点流和处理流

节点流是可以从或向一个特定的地方(节点)读写数据,也叫 低级流。如FileReader。

处理流是在对节点流封装的基础上的一种流,通过封装后来实现数据的读写功能,也叫高级流。

 

 

节点流

未经封装,low level stream

处理流

封装过,  high level stream

    常用节点流

父 类 InputStream OutputStream Reader Writer
文 件 *FileInputStream FileOutputStrean FileReader FileWriter 文件进行处理的节点流
数 组*ByteArrayInputStream   ByteArrayOutputStream   CharArrayReader   CharArrayWriter 对数组进行处理的节点流(对应的不再是文件,而是内存中的一个数组)
字符串 *无 无StringReader StringWriter    对字符串进行处理的节点流
管 道 *PipedInputStream PipedOutputStream PipedReader PipedWriter对管道进行处理的节点流

    常用处理流(关闭处理流使用关闭里面的节点流)

父 类 InputStream OutputStream Reader Writer
缓冲流 *BufferedImputStrean BufferedOutputStream BufferedReader BufferedWriter

----需要父类作为参数构造,增加缓冲功能,避免频繁读写硬盘,可以初始化缓冲数据的大小,由于带了缓冲功能,所以就写数据的时候需要使用flush 方法咯 转换流 *InputStreamReader   OutputStreamWriter- 要inputStream 或OutputStream 作为

参数,实现从字节流到字符流的转换数据流 *DataInputStream DataOutputStream -提供将基础数据类型写入到文件中,或者

读取出来,为什么要有这个流呢?看这样的分析,如果没有这种流的话,有一个long,本身只占8 个字节,如果我要写入到文件,需要转成字符串,然后在转成字符数组,那空间会占用很多,但是有了这种流之后就很方便了,直接将这8 个字节写到文件就完了。。是不是既节约了内存空间有让程序写起来更加方便简单了呐。写倒是很简单,但是读取的时候就注意了,根据读取的数据类型,指针会往下移,所以你写的顺序必须要和读的顺序一致才能完成正确的需求.

3.4 Java输入输出流

总结。

分类

字节输入流

字节输出流

字符输入流

字符输出流

抽象基类

InputStream

OutputStream

Reader

Writer

访问文件

FileInputStream

FileOutputStream

FileReader

FileWriter

访问数组

ByteArrayInputStream

ByteArrayOutputStream

CharArrayReader

CharArrayWriter

访问管道

PipedInputStream

PipedOutputStream

PipedReader

PipedWriter

访问字符串

 

 

StringReader

StringWriter

缓冲流

BufferedInputStream

BufferedOutputStream

BufferedReader

BufferedWriter

转换流

 

 

InputStreamReader

OutputStreamWriter

对象流

ObjectInputStream

ObjectOutputStream

 

 

抽象基类

FilterInputStream

FilterOutputStream

FilterReader

FilterWriter

打印流

 

PrintStream

 

PrintWriter

推回输入流

PushbackInputStream

 

PushbackReader

 

特殊流

DataInputStream

DataOutputStream

 

 

序列化【tbw】

posted @ 2012-04-06 17:21  陈朋  阅读(370)  评论(0编辑  收藏  举报