IO流
1.缓冲的概念
IO流就是对电脑中的文件(文本,音频,视频,图片)进行读和写的
计算机的cpu通过内存从磁盘上面读取数据,是一个一个自己读取的,然后先存到缓冲内存里面。大概存4kb左右。再进行整次的读取。
- 读取数据:按照CPU通过内存访问磁盘,读取4kb到缓冲区,再从内存中取出来。
磁盘 -->内存–>通过代码显示数据
- 写入数据:先把数据写到内存中,然后再从内存写入到磁盘里面
java代码数据–>内存–>磁盘
2.IO流
I:
Input 输入流,从硬盘上面读取数据到内存里面
应用场景:磁盘上有一个1.txt文件,可以将1.txt文件中的内容 读取到java代码中
O:
output 输出流, 从内存中写入到硬盘上面,这叫输出
应用场景:java 代码有一个String类型的数据,将整个String发类型的数据写入到磁盘某一个文件中2.txt
输入流:
分为两种情况:一种是字节输入流和字符输入流
输出流:
分为两种情况:一种是字节输出流和字符输出流
字节输入流:
InputStream
直接的子类FileInputStream
FileInputStream不具备缓冲的效果
借助于一个叫BufferedInputStream 字节缓冲输入流字节输出流:
OutputStream
直接子类FileOutpuStream
在java代码里面写一个字符串,写入到磁盘中某一个文件中
FileOutpuStream没有缓冲,如果想要加缓冲效果,需要加缓冲流 BufferedOutputStream 字节缓冲输入流字符输入流:
Reader
有一个孙子类叫FileReader
专门处理文本类型的,一个非常方便的类,但是他处理音频视频图片是不行的,有可能出错
FileReader是不具备缓冲的效果的,BufferedReader 让其具有缓冲效果
比如磁盘上面有一个文件1.txt 可以将数据读取到内存java代码里面
int read()
读一个字符
int read(char[] cbuf, int off, int len)
将字符读入数组的一部分
String readLine()
读一行文字字符输出流:
Writer
有一个孙子类FileWriter
FileWriter不具备缓冲效果的,借助于BufferedWriter
从内存中写入到磁盘//遍历读取数据 int length = -1; while ((length = br.read())!= -1) { System.out.println(length); }