java输入输出流
一、什么是IO
java中I/O操作主要指使用java进行输入、输出操作。java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。
java.io是大多数面向数据流的输入/输出类的主要软件包。此外,java也对块传输提供支持,在核心库java.nio中采用的便是块io。
流IO简单易用,效率较低;块IO效率很高,但编程比较复杂。
java IO模型:
java的IO模型设计非常优秀,使用Decorator模式,按功能划分stream,您可以动态装配这些Stream。例如,一个具有缓冲的文件输入流,应组合使用FileInputStream和BufferInputStream。
数据流的基本概念
“流是磁盘或其它外围设备中存储的数据的源点或终点。”
在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:
标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流等等,java中将输入输出抽象称为流
基本概念:
1. 数据流:
一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。
程序从输入流读取数据源。向输出流写入数据。
采用数据流的目的是使得输入输出独立于设备。
InputStream不关心数据源来自何种设备(键盘、文件
、网络);OutputStream不关心数据的目的是何种设备。
2. 数据流分类:
流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种:
1) 字节流:数据流中最小的数据单元是字节
2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
标准IO
Java程序可通过命令行参数与外界进行简短的信息交换,同时,也规定了与标准输入、输出设备,如键盘、显示器进行信息交换的方式。而通过文件可以与外界进行任意数据形式的信息交换。