1. 关于流的概念
想象一段水流,一定有一个起点,有一个终点,还有一条河来容纳它。磁盘或者内存中的文件数据就是水流,我们的程序就是河。流是基于unix中管道提出来的一个概念。在unix中,管道是一条不间断的字节流,用来实现同一设备上不同程序间的通信,或与其他设备进行交互。最常见的场景是文件的复制转移和服务器与硬件设备之间的通信。
2. 流的分类
1> 根据流的方向,将流分为输入流和输出流;
2> 根据流的操作类型,将流分为字节流和字符流。
所以,流有四种类型:字节输入流(InputStream)、字节输出流(OutputStream)、字符输入流(Reader)和字符输出流(Writer)。
3. 字节流
1> FileInputStream 和 FileOutputStream:用于直接根据路径读写磁盘中的文件
FileInputStream in = new FileInputStream("D:\test.txt");
FileOutputStream out = new FileOutputStream("D:\test.txt");
2> BufferedInputStream 和 BufferedOutputStream:用于提高输入/输出的效率
3> DataInputStream 和 DataOutputStream:常用于用于网络通信
4. 字符流
1> InputStreamReader 和 OutputStreamWriter:用于处理字符
2> BufferedReader 和 BufferedWriter:用来处理字节流来提高读取效率
BufferedReader reader = new Buffered(new InputStreamReader(new InputStream());
BufferedWriter writer = new Buffered(new OutputStreamWriter(new OutputStream());
BufferedReader拥有直接读取一行数据的能力;BufferWriter不能直接写入一行数据,可以用PrintWriter来间接实现:
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("D:\test.txt")));
writer.print("我是一行数据");
writer.close();