一、流的分类
1.1 流的方向:输入流和输出流
输入流: 输入到计算机内存,键盘键入,文件读取等
输出流: 从计算机内存输出,写入显示器,文件写入等
1.2 流的功能:节点流和过滤流
-
节点流:从一个特定的数据源读写数据。
节点流是直接操作文件,网络等的流
,例如:FileInputStream和FileOutputStream
-
过滤流: 对节点流进行系列包装,例如:BufferedInputStream和BufferedOutputStream:提供带缓冲的读写,DataInputStream和DataOutputStream:提供基本数据类型的功能
public static void main(String[] args) throws IOException {
// 节点流FileOutputStream,直接对数据源操作
FileOutputStream fileOutputStream = new FileOutputStream("test.txt");
// 过滤流BufferedOutputStream装饰节点流,提供缓冲写
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
fileOutputStream);
// 过滤流DataOutputStream进一步装饰过滤流,使其提供基本数据类型的写
DataOutputStream out = new DataOutputStream(bufferedOutputStream);
out.writeInt(3);
out.writeBoolean(true);
out.flush();
out.close();
// 此处输入节点流,过滤流正好跟上边输出对应,读者可举一反三
DataInputStream in = new DataInputStream(new BufferedInputStream(
new FileInputStream("A.txt")));
System.out.println(in.readInt());
System.out.println(in.readBoolean());
in.close();
}
二、流的方法
2.1 字节流
- 字节输入流:FileInputStream、BufferedInputStream和DataInputStream
FileInputStream
:用于从本地文件系统中读取文件内容
【构造方法】
1 FileInputStream(File file):打开实际文件来创建FileInputStream实例,该文件通过文件系统中的File对象file指定。
2 FileInputStream(String name):打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名name指定
BufferedInputStream
:自带缓冲区,在读取数据时,先放到缓冲区中,减少对数据源的访问
【构造方法】
BufferedInputStream(InputStream in):创建一个BufferedInputStream并保存其参数,即输入流in,以便将来使用
BufferedInputStream(InputStream in,int size):创建一个具有指定缓冲区大小的BufferedInputStream并保存其参数,即输入流in,以便将来使用。
DataInputStream
:该类提供一些基于多字节读取方法,从而可以读取基本数据类型的数据。
2.2 字符流
字符流只能处理字符数据
FileReader:用来读取字符文件的便捷类
FileWriter:用来写入字符文件的便捷类,可用于写入字符流
BufferedWriter: 将文本写入字符输出流,缓冲各个字符
参考博文链接!!!
三、Stream的API
Stream的API特性!!!
JDK 8引入了Stream API,它是Java中处理集合数据的一种新方式。Stream流提供了一种更简洁、更灵活的方式来对集合进行操作和处理。