一、流的概念
流(stream)的概念源于UNIX中管道(pipe)的概念。在UNIX中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备、外部文件等。
一个流,必有源端和目的端,它们可以是计算机内存的某些区域,也可以是磁盘文件,甚至可以是Internet上的某个URL。
流的方向是重要的,根据流的方向,流可分为两类:输入流和输出流。用户可以从输入流中读取信息,但不能写它。相反,对输出流,只能往输入流写,而不能读它。
实际上,流的源端和目的端可简单地看成是字节的生产者和消费者,对输入流,可不必关心它的源端是什么,只要简单地从流中读数据,而对输出流,也可不知道它的目的端,只是简单地往流中写数据。
形象的比喻——水流 ,文件======程序 ,文件和程序之间连接一个管道,水流就在之间形成了,自然也就出现了方向:可以流进,也可以流出.便于理解,这么定义流: 流就是一个管道里面有流水,这个管道连接了文件和程序。
IO流 —— BufferedWriter
1、字符流缓冲区:缓冲区的出现提高了对数据读写的效率。
2、对应类:
BufferedWriter
BufferedReader
3、缓冲区要结合流才可以使用;在流的基础上对流的功能进行了增强。
4、写入缓冲区: BufferedWriter
-java.io.Writer
-java.io.BufferedWriter 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。
5、构造函数:
BufferedWriter(Writer out)
在创建缓冲区之前,必须要先有字符写入流对象。
6、特有方法:
该缓冲区中提供了一个跨平台的换行符: newLine();
该方法可以在任意平台下完成换行动作,而不需要我们根据平台的不同而使用不同的换行符。
二、流的分类
http://java.io包中的类对应两类流,一类流直接从指定的位置(如磁盘文件或内存区域)读或写,这类流称为结点流(node stream),其它的流则称为过滤器(filters)。过滤器输入流往往是以其它输入流作为它的输入源,经过过滤或处理后再以新的输入流的形式提供给用户,过滤器输出流的原理也类似。
Java的常用输入、输出流
http://java.io包中的stream类根据它们操作对象的类型是字符还是字节可分为两大类: 字符流和字节流。
Java的字节流
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
Java的字符流
Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
结合开始所说的输入/输出流 ,出现了个一小框架。 字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer
上传图片文件
https://blog.csdn.net/weixin_40848550/article/details/81359896