IO流是用来处理设备之间的数据传输,Java对数据的操作是通过流的方式进行的
按照数据流向分为两类:输入流 读入数据;输出流 写出数据
按照数据类型分为两类:字节流 可以读写任何类型的文件,比如音频,视频,文本文件;字符流 只能读写文本文件
IO流基类
字节流的抽象基类:InputStream,OutputStream
字符流的抽象基类:Reader ,Writer
注意:这里由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀
字节流
字节流按照操作数据类型可分为字节输入流:InputStream;字节输出流:OutputStream
字节输出流的构造方法:
1:FileOutputStream(File file)
2:FileOutputStream(String name)
如果要创建字节输出流对象,那么要做几件事情?
1:调用系统资源创建a.txt文件
2:创建了一个fos对象
3:把fos对象指向这个文件
注意:写完程序后一定要close(),这是为了通知系统释放关于管理a.txt文件的资源,并且让Io流对象变成垃圾,等待垃圾回收器对其回收
字节输入流FileInputStream:int read():一次读取一个字节,如果没有数据返回的就是-1
字符流
因为字节流操作中文不是很方便,所以java就提供了字符流
字符流 = 字节流 + 编码表
编码: 就是把字符串转换成字节数组; String – byte[]
解码: 把字节数组转换成字符串;byte[] – String
OutputStreamWriter的构造方法:
1:OutputStreamWriter(OutputStream out):根据默认编码(GBK)把字节流的数据转换为字符流
2:OutputStreamWriter(OutputStream out,String charsetName):根据指定编码把字节流数据转换为字符流
InputStreamReader的构造方法:
1:InputStreamReader(InputStream is):用默认的编码(GBK)读取数据
2:InputStreamReader(InputStream is,String charsetName):用指定的编码读取数据
字符缓冲流
BufferedWriter写出数据 高效的字符输出流;构造方法: public BufferedWriter(Writer w)
BufferedReader读取数据 高效的字符输入流;构造方法: public BufferedReader(Reader e)
BufferedWriter: public void newLine():根据系统来决定换行符 具有系统兼容性的换行符
BufferedReader: public String readLine():一次读取一行数据 是以换行符为标记的;读到换行符就换行 没读到数据返回null