什么是流?
字节流简单来说就是对一个个文档内容处理
那么你们现在看一篇文章的内容可是大量文字,要是你们手机上的文字一个个显示,你们看得下去吗
肯定不能这么做
那么就会做个缓冲流,将一大段文字进行读取,放在内存,被随时调用
大家看电影是不是经常会发现,等待缓冲,就是说网站的内容被拷贝到本地电脑的临时文件夹收取,然后你们再去查看
那么缓冲流就是将大批的文件放入手机的手机卡
你们看文章看图片,看视频没什么问题的
那么字节流就不适合做这些了,缓冲流就很好了。所以需要套外流
所以手机卡需要大量的空间,否则你们就需要一段时间进行清理
字节流:
一、输出流
1、OutputStream 抽象类
2、FileOutputStream 字节输出流(直接接文件),假如文件不存在,会自动创建文件,但不会创建目录
3、BufferedOutputStream 字节缓冲输出流(接字节输出流)
4、PrintStream 打印流(功能和缓冲字节流一样,方法更多,更常用)
5、DataOutputStream 数据输出流(写基本数据类型+String)
6、ObjectOutputStream 对象输出流(参数为缓冲流,类要实现序列化接口 7、ByteArrayOutputStream(写数据到内存中的数组里面)
****(文件类)8、RandomAccessFile随机读写文件(输入输出流,有指针,可直接接文件)要不停读写硬盘,效率极低
二、输入流
1、InputStream 抽象类
2、FileInputStream 字节输入流(直接接文件),文件不存在时会报异常
3、BufferedInputStram 字节缓冲输入流(接字节流)
4、DataInputStream(数据输入流)
5、ObjectInputStream 对象输入流
6、ByteArrayInputStream读内存中的数组
字符流:(抽象类:Reader/Writer)借助字符流读文本文件 不能读mp3或电影文件
一、输出流
1、FileWriter 文件字符输出流(直接接文件名)采用系统默认编码写数据
2、BufferedWriter 缓冲字符输出流(参数是文件字节输出流),不建议使用
3、PrintWriter 字符打印输出流(功能和缓冲字符输出流一样,但方法更多,后面也是接缓冲字符输出流)允许一次写一行,允许自动刷新
4、OutputStreamWriter(转换流,字节转字符 参数第一个是字节缓冲输出流,第二个为编码方式)
二、输入流
1、FileReader 文件字符输入流(直接接文件名)采用系统默认编码读数据
2、BufferedReader 缓冲字符输入流 参数是字符输入流或转换流,允许一次读一行,带有缓冲区
3、InputStreamReader 转换流,字节转字符 第一个参数为字节缓冲流,第二个参数设置编码方式
4、StringReader:读字符串
IO流套接例子:
PrintStream ps = new PrintStream(newBufferedOutputStream(new FileOutputStream(file)))
DataOutputStream dos = newDataOutputStream(new BufferedOutputStream(new FileOutputStream(file))
PrintWriter pw = new PrintWriter(newOutputStreamWriter(new FileOutputStream(file,"utf-8"));
BufferedReader br = newBufferedReader(new InputStreamReader(newFileInputStream(file),"utf-8"));
最后总结:流的作用不是很明显,因为这是项目中的某个功能,比如上传下载,实际的运用就需要在项目中体现,如果可能会在WEB上作为一个功能实现