14.1 数据流的基本概念
1.流的分类
按照流动方向:输入流(InputStream)和输出流(OutputStream)
程序用输出流向文件写数据,用输出流从文件中读数据;而键盘只针对输入流, 屏幕只针对输出流。
按照读取类型:字节流 和 字符流
字节流:从InputStream和OutputStream 派生出来的一系列类,以字节(byte)为 基本处理单位。
字符流:从Reader 和 Writer 派生出来的一系列类,以16位的Unicode 码表示的字符为基本处理单位。
按照发生源头:节点流 和 过滤流
用于直接操作目标设备对应的流叫节点流;而程序可以通过过滤流去操作节点 流,以更加灵活方便的读写各种类型的数据。
注意:
(1)·写入流的数据顺序排列
(2)·字节流和字符流不要混用
2.Java标准输入/输出流
·标准输入:对象是键盘,Java对应类是System.in
·标准输出:对象是屏幕,Java对应类是System.out
·标准错误输出:对象也是屏幕,Java对应类是System.err
14.2 字节流和字符流
1.字节流:
1)inputstream;
2)outputstream;
3)常用的一些字节流:1.文件流FileInputStream和FileOutputStream;
前者的作用在于通过指定文件路径的方式,将一个文件中的内容作为其他 流的数据源,从而可使用流的方式对文件进行读操作;后者的作用在于指定 文件路径的方式,将一个文件作为其他流的输出目的地,从而可使流的方式 对文件进行写操作
2.字节数组流ByteArrayInputStream和ByteArrayOutputStream;
字节数组流的作用是在字节数组和流之间搭建桥梁。
3.管道流PipedInputStream和PipedOutputStream;
管道用来把一个程序,线程和代码块的输出连接到另一个程序,线程和代码 块。管道输入流作为一个通信管道的接收端,管道输出流则作为发送端。管 道流必须输入/输出并用。管道的连接方式有:·1在构造方法中连接;·2通过 各自的connect()方法连接
4.对象流ObjectInputStream和ObjectOutputStream;
能够输入/输出对象的流
5.过滤流FilterInputStream和 FilterOutputStream;
对其他输入输出流进行特殊处理,使得它们在读写数据的同时还可以对数 据进行特殊处理。还提供了同步机制,使得每一时刻只有一个人线程可以 访问一个输入与输出流
6.缓冲流BufferedInputStream和BufferedOutputStream;
这两个类是过滤流的子类,实现了带缓冲的过滤流。它提供了缓冲机制, 把节点流“捆绑”到缓冲流上,可以提高读写效率。
7.数据流DataInputStream和DataOutputStream;
它们也是过滤流的子类,它们以统一的方式读出或写入boolean,int,long
double等基本数据类型,以及字符串的读写的方法
8.打印流PrintStream;
2.字符流