Java IO整理

原创 2017年01月03日 15:24:02

Java IO 整理

本文参考
http://blog.csdn.net/yuebinghaoyuan/article/details/7388059/
http://www.cnblogs.com/oubo/archive/2012/01/06/2394638.html
转载请说明出处


Java中的流,可以从不同的角度进行分类。

按照数据流的方向不同可以分为:输入流和输出流。

按照处理数据单位不同可以分为:字节流和字符流。

按照实现功能不同可以分为:节点流和处理流。

 

节点流:直接与数据源相连,读入或读出。

 

处理流:与节点流一块使用,在节点流的基础上,再套接一层,套接在节点流上的就是处理流。

 

JDK提供的流继承了四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)。

     

 

输入字节流InputStreamIO

 

1.InputStream 是所有的输入字节流的父类,它是一个抽象类。

2.ByteArrayInputStream、StringBufferInputStream、FileInputStream 是三种基本的介质流,它们分别从Byte 数组、StringBuffer、和本地文件中读取数据。3.PipedInputStream 是从与其它线程共用的管道中读取数据

4.ObjectInputStream 和所有FilterInputStream 的子类都是装饰流(装饰器模式的主角)。


 

输出字节流OutputStream

        

1.OutputStream 是所有的输出字节流的父类,它是一个抽象类。

2.ByteArrayOutputStream、FileOutputStream 是两种基本的介质流,它们分别向Byte 数组、和本地文件中写入数据。PipedOutputStream 是向与其它线程共用的管道中写入数据,

3.ObjectOutputStream 和所有FilterOutputStream 的子类都是装饰流。


 

字符输入流Reader

 

1.Reader 是所有的输入字符流的父类,它是一个抽象类。

2.CharReader、StringReader 是两种基本的介质流,它们分别将Char 数组、String中读取数据。PipedReader 是从与其它线程共用的管道中读取数据。

3.BufferedReader 很明显就是一个装饰器,它和其子类负责装饰其它Reader 对象。

4.FilterReader 是所有自定义具体装饰流的父类,其子类PushbackReader 对Reader 对象进行装饰,会增加一个行号。

5.InputStreamReader 是一个连接字节流和字符流的桥梁,它将字节流转变为字符流。FileReader 可以说是一个达到此功能、常用的工具类,在其源代码中明显使用了将FileInputStream 转变为Reader 的方法。我们可以从这个类中得到一定的技巧。Reader 中各个类的用途和使用方法基本和InputStream 中的类使用一致。后面会有Reader 与InputStream 的对应关系。

 


 

字符输出流Writer



1.Writer 是所有的输出字符流的父类,它是一个抽象类。

2.CharArrayWriter、StringWriter 是两种基本的介质流,它们分别向Char 数组、String 中写入数据。PipedWriter 是向与其它线程共用的管道中写入数据,

3.BufferedWriter是一个装饰器为Writer 提供缓冲功能。

4.PrintWriter 和PrintStream 极其类似,功能和使用也非常相似。

5.OutputStreamWriter 是OutputStream 到Writer 转换的桥梁,它的子类FileWriter 其实就是一个实现此功能的具体类(具体可以研究一SourceCode)。功能和使用和OutputStream 极其类似。


 

补充

1.字节/字符数组:ByteArrayInputStream,ByteArrayOutputStream,CharArrayReader,CharArrayWriter是在内存中开辟了一个字节或字符数组。

2.Buffered缓冲流::BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter,是带缓冲区的处理流,缓冲区的作用的主要目的是:避免每次和硬盘打交道,提高数据访问的效率。

3.对象流:ObjectInputStream,ObjectOutputStream,把封装的对象直接输出,而不是一个个在转换成字符串再输出。

4.序列化流:SequenceInputStream。将两个或者多个输入流当成一个输入流依次读取

使用对象流需要实现Serializable接口,否则会报错。而若用transient关键字修饰成员变量,不写入该成员变量,若是引用类型的成员变量为null,值类型的成员变量为0.

 

Java中的IO流API整理

之前简单画了个IO流的结构图,方便梳理和查看。
  • lyu0709
  • lyu0709
  • 2016年06月04日 22:20
  • 270

java Io操作分类整理(终于不再迷糊了!!!)

下面对学习进行一下简单的总结 。(注图片未上传,想看请下载附件):         IO流主要用于硬板、内存、键盘等处理设备上得数据操作,根据处理数据的数据类型的不同可以分为:字节流(抽象基类为In...
  • itguangit
  • itguangit
  • 2015年12月23日 21:45
  • 1478

Java IO 框架整理

昨天笔试时碰到了IO流的题目,很久没接触IO编程了,所以那道题目做的不行。 搜了一下,这篇文章总结的很有条理,果断转载。 转自:http://tanshenghui.javaeye.com...
  • novelly
  • novelly
  • 2014年03月15日 17:20
  • 469

Java IO整理总结

java中的IO整理 写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面...
  • qizhenghao
  • qizhenghao
  • 2014年11月10日 16:44
  • 404

java中IO整理

写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面。照旧,文章依旧以例子为主,因为...
  • u012079603
  • u012079603
  • 2015年01月27日 15:10
  • 338

java io操作整理

点击打开链接 http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html
  • u012289441
  • u012289441
  • 2015年05月31日 15:11
  • 297

java IO流整理

Java流操作有关的类或接口: Java流类图结构:   流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的...
  • F1576813783
  • F1576813783
  • 2017年08月16日 16:58
  • 106

JAVA中IO整理

http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html JAVA中的IO整理 写在前面:本文章基本覆盖了...
  • njiang
  • njiang
  • 2013年06月06日 22:13
  • 552

java io 流整理

Java中的流,可以从不同的角度进行分类。 按照数据流的方向不同可以分为:输入流和输出流。 按照处理数据单位不同可以分为:字节流和字符流。 按照实现功能不同可以分为:节点流和处理流。 输入流 ...
  • sdfadfb
  • sdfadfb
  • 2015年11月25日 17:58
  • 107

JAVA - IO流 - 整理

JAVA IO流处理
  • Jianwei_Wang_Re
  • Jianwei_Wang_Re
  • 2015年10月20日 09:41
  • 240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java IO整理
举报原因:
原因补充:

(最多只允许输入30个字)