Java的IO流及IO对象的序列化整理【转】

1、什么是IO流?
 byte序列的读写,Java中的IO流是实现输入/输出的基础.

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

     


1)
InputStream
 : 抽象类读取数据的过程  包含读取方法read();
  in 模仿了读取小说的过程

简单说  :  in是读取文件的

OutputStream:抽象了写出数据的过程  包含写出方法write();
 out模仿了写笔记记录的过程

简单说  : out是写入文件的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwdyx.html