文件流:
FileInputStream / FileOutputStream / FileReader / FileWriter
缓冲流:
BufferedInputStream / BuffereOutputStream / BufferedReader / BufferedWriter
转换流
InputStreamReader / OutputStreamWriter
File类
1.File 是一个类,可以有构造器创建其对象。此对象对应着一个文件(比如:.txt,.avi,.doc....)
2.File对象是与平台无关的
3.File中的方法只涉及文件如何删除,创建,重命名等等。若涉及文件内容与file无关,必须由io流来完成。
4.File类的对象常常作为io流的具体类的构造器的形参。
基本操作:
io流分类:
1.操作数据单位:字节流和字符流
2.根据流向不同:输入流(inputstream,reader..)和输出流(outputstream,writer) (操作都是以内存为参照对象,输入流就是从外面磁盘往内存输入,输出流就是从内存往外面的磁盘输出)
3.按照流的角色:节点流(inputstream,Filereader,ouputStream,writer)和处理流(对节点流进行一次封装的流 比如:缓冲流BuffereReader等)
抽象基类 | 字节流 | 字符流 |
输入流 | InputStream | reader |
输出流 | OutputStream | writer |
另外容易搞蒙一个处理流叫转换流:就是把字节流转化为字符流,就两个(InputStreamReader,OutputStreamWriter)。
还有一个对象流:ObjectInputStream,ObjectOutputStream
输入流例子:
输出流例子:
输入流和输出流共同使用的一个应用例子:copy文件公用方法。
字符流(reader,writer)和字节流方法属性一样,只能对文本文件进行操作,对音频,视频,图片操作需要用字节流。例子如下:
缓存流(BufferedinputStream,BufferedOutputStream),用缓存流时读取速度较快
字符流的缓存流例子:
一般我们开发都是用缓存流,可提升文件操作效率。
转换流:InputStreamReader 和 OutputStreamWriter
字节流-->字符流 用 InputStreamReader 解码:字节编码-->字符串
字符流-->字节流 用 OutputStreamWriter 编码:字符串-->字节编码
对象流:ObjectInputStream和ObjectOutputStream
用于存储和读取对象的处理流,可以把java对象写入到数据源中,也可以从数据源中还原为原对象。
序列化:用ObjectOutputStream类将一个对象写入io流中
反序列化:用ObjectInputStream类从IO流中恢复原对象。
对象流不能序列化static和transient修饰的成员变量
序列化例子:
反序列化例子: