background image

Java I/O 系统基础入门

编程语言的

I/O 类库中常常使用流这个抽象的概念,它代表任何有能力产生数据的数

据源对象或时有能力接收数据的接收端对象。

“流”概念源于 UNIX 中的管道(pipe)的概念。

UNIX 中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设

备、外部文件等,它屏蔽了实际的

I/O 设备中处理数据的细节。   一个流,必有源端和目的端,

它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是

Internet 上的某个

URL。 流的方向是重要的,根据流的方向,流可以分为两类:输入流和输出流。其实输入/输

出是想对于内存来说的。

 实际上,流的源端和目的端可简单地看成是字节的生产者和消费

者,对于输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,

也可不知道它的目的端,只是简单地往流中写数据。

1

a.流:一组有序的数据序列。

2

b 字节流:数据流中最小的数据单元是字节。

3

c.字符流:数据流中最小的数据单元是字符。

 .  java.io 包中的类对应两类流

一类流直接从指定的位置(如磁盘文件或内存区域)读或写,这类流称为结点流,其

他的流则称为过滤流(包装流)

过滤流:一些流可以从文件以及其他地方接收字节,另一些流可以将字节组合成更有

用的数据类型。将一个已经存在的流传递给另一个流的构造方法,将这两种流结合起来,结

合后的流被称为过滤流。过滤器输入流往往是以其它输入流作为它的输入源,经过过滤或处

理后再以新的输入流的形式提供给用户,过滤器输出流也类似。我们很少用单一的类来创建

流对象,而是通过叠合多个对象来提供所期望的功能(即装饰器设计模式)。

java 的常用输入、输出流其实都是继承自 4 个抽象类,分别是:

1

基于单字节的

InputStream,OutputStream 类(面向字节形式的I/O)

2

基于双字节的

Unicode 代码单元的 Reader, Writer 类(面向字符形式的I/O)