什么是IO流
Read Input InputStream 输入
Write Output OutputStream 输出
io流的分类
1.按照流的方向分类
往内存中去叫做输入
从内存中出来叫做输出
2.按照读取数据的方式分类
字节流 是万能的
字符流 为文本文档而存在的、
输入流输出流 字节流 字符流
java中所有的流都在java.io.*下
javaIO流的四大家族
java.io.InputStream
java.io.OutputStream
java.io.Reader
java.io.Writer
都是抽象类
流都需要关闭 .close()
输出流都需要刷新 flush();;清空管道 管道中的剩余文件全部输出
java.io包下的16个流
文件专属:
java.io.FileInputStream(掌握)
java.io.FileOutputStream(掌握)
java.io.FileReader
java.io.FileWriter
转换流:(将字节流转换成字符流)
java.io.InputStreamReader
java.io.OutputStreamWriter
缓冲流专属:
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BufferedOutputStream
数据流专属:
java.io.DataInputStream
java.io.DataOutputStream
标准输出流:
java.io.PrintWriter
java.io.PrintStream(掌握)
对象专属流:
java.io.ObjectInputStream(掌握)
java.io.ObjectOutputStream(掌握)
FileInputStream
学会fileinputstream的框架
byte[] bytes =new byte[4];
FileInputStream 其他常用方法
int available()
返回流中的剩余的没有读到的字节数量
可以根据这个方法先获得总字节数量
byte[] bytes = new byte[fis.available()];
//直接不需要循环了 直接new 一个总字节数量大小的数组
不适合大文件 因为byte数组不能太大
long skip(long n )
跳过几个字节不读
fis,skip(3);
文件字节输出流 FileoutputStream
文件不存在会新建 会把源文件清空再写入
如果不想清空 再写入是加一个true
byte[] bytes ={97.98,99,100}
fos.write(bytes)
fos.write(bytes,0,2)/输出一部分;
fos.flush();
把一个字符串写入文件
先把字符串转化为byte数组再写入
文件复制
从D盘读到内存 输入 input
然后再写到C盘 输出 output
拷贝的过程就是一边读 一边写
FileReader 文件字符输入流
读取文本
char[ ] chars = new char[4];
FileWriter 文件字符输出流
写到硬盘上
文本文件复制
缓冲流专属
当一个流的构造方法中需要一个流的时候 被传进来的流叫做节点流
负责包装的叫做包装流
在关闭包装流的时候 节点流也会关闭
更加方便 不需要自己创建数组了
br.Readline();
可以一行一行的读