什么叫io流
io流就是:硬盘里的数据与内存的数据交换的方式。
硬盘数据➡内存数据 的方式叫输入流(InputStream) 这个过程叫做读(Read)
内存数据➡硬盘数据 的方式叫输出流(OutPutStream)这个过程叫做写(Write)
以内存为参照物 :
出内存(输出) 进内存(输入)
io流的分类:
- 按照数据流的方向:输入流, 输出流;
- 按照数据处理单位:字节流,字符流;
- 按照功能:节点流,处理流;
什么是输入流,输出流?
硬盘数据➡内存数据 叫输入流(InputStream) 这个过程叫做读(Read)
内存数据➡硬盘数据 叫输出流(OutPutStream)这个过程叫做写(Write)
什么是字节流与字符流?
读取数据的单位多少 区分 字符流跟字节流;
字节流:一次读取一个字节(byte)// 1byte==8bit 一字节由8个位(一位就是一个二进制数)组成
字节流(万能流) 任何文件都可以采用
字符流:一次读取一个字符(2字节) //读取文本文件 不能读取视频,音频文件,图片;
Java io api
java.io.InputStream ---------- 字节输入流
java.io.outputStream ---------- 字节输出流
java.io.Reader ------------------字符输入流
java.io.Writer -------------------字符输出流
abstract class (抽象类) 继承了io的 closeable接口
以Reader结尾是字符输入流的子类
以Writer结尾是字符输出流的子类
用完流需要 close关闭接口;
输出流(input,write)
实现FlushAlbe接口();
flush();方法:清空管道,
java.oi.包下需要掌握的流有16个:
文件专属:
java.io.FileInputStream
java.io.FileoutputStream
java.io.FileReader
java.io.FileWrite
转换流(将字节流转换成字符流 ):
java.io.InputStreamReader
java.io.OutputStreamWriter
缓冲流:
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputSteam
java.io.BufferedOutputStream
数据专属流:
java.io.dataInputStream
java.io.dataOutStream
标准输出流:
java.io.printWriter
java.io.printStream
对象专属流:
java.io.objectInputStream
java.io.objectOutStream
java.io.fileInputStream 当流不为空的时候需要close()关闭 //避免空指针异常
int read 方法 一个一个字节的读;
file=new FileInputStream("D:\\作业\\111.txt");
while (true){
System.out.println(file.read()); //一个字节一个字节的读
if (file.read()==-1){
break;
}
当一个流需要一个参数(一个流)传进来的时候
这个参数就是 节点流;
BufferedInputStream BufferedOutStream
构造器需要一个流作为参数 支持mark()reset() 功能
DataInputStream DataOutStream :
数据输入流 可以从底层输入流读取 JAVA的原始数据
底层流:InputStream OutPutStream
ObjectInputStream ObjectOutStream (可以用方法 返回对象)
printStream 打印流 方便打印出流