(一)IO流的分类?IO流,什么是IO?
I : Input
O : Output
通过IO可以完成硬盘文件的读和写。
一种方式是按照流的方向进行分类:
以内存作为参照物
往内存中去,叫做输入(Input)。或者叫做读(Read)。
从内存中出来,叫做输出(Output)。或者叫做写(Write)。
可分为:输入流、输出流、字节流、字符流
(二)java IO流有四大家族四大家族的首领:
java.io.InputStream 字节输入流
java.io.OutputStream 字节输出流
java.io.Reader 字符输入流
java.io.Writer 字符输出流
字符流和字节流的区别:
字符流:只能读取一些普通文件。
字节流:可以读取普通文件,视频,音频等等。
所有的流都实现了:
java.io.Closeable接口,都是可关闭的,都有close()方法。用完流一定要关闭。
所有的输出流都实现了:
java.io.Flushable接口,都是可刷新的,都有flush()方法。在最终输出之后一定要flush刷新,否则可能会导致数据丢失。
注意:在java中只要“类名”以Stream结尾的都是字节流。以“Reader/Writer”结尾的都是字符流。
(三)java.io包下需要掌握的流文件专属流:(掌握)
FileInputStream
FileOutputStream
FileReader
FileWriter
作用:可以对文件进行一些读写操作。
以下的流只是对文件流进行一些加强,就是扩展而已。
转换流专属:(了解)
InputStreamReader
OutputStreamWriter
作用:将字节流转换成字符流。
缓冲流专属:(了解)
BufferedInputStream
BufferedOutputStream
BufferedReader
BufferedWriter
作用:对文件流进行一些扩展。
特有方法:readLine() 一次读取一行
数据流专属:(了解)
DataInputStream
DataOutputStream
作用:可以存储一些基本数据类型的数据
特有方法:writeInt(int i)、writeBoolean(boolean b)...
readInt()、readBoolean()...
注意:存的时候和取的时候顺序必须相同,否则就会取到不一样的值。
标准输出流:
PrintWriter
PrintStream(掌握)
作用:可以将数据输出到文件里面。
用途:可以配合写一个日志类来管理日志。
System.setOut(new PrintStream("文件"));
System.out.println("java"); // "java" 会输出到文件里面
对象专属流:(掌握)
ObjectInputStream(反序列化)
ObjectOutputStream(序列化)
序列化概念:
序列化:serialize (内存--硬盘)
反序列化:reserialize(硬盘--内存)
作用:可以存储对象和基本类型数据。(也是按顺序存取的,否则会异常)
特有方法:writeObject(Object o)
readObject()
存储多个对象建议使用集合去存,然后将集合对象保存到文件里。
注意:参与序列化的类型必须实现java.io.Serializable接口。
transient关键字:游离的、不参与序列化的。
并且建议将序列化版本号(serialVersionUID)手动的写出来。
IO流:文件的读和写。
Properties:是一个Map集合,key和value都是String类型。
使用:
// 创建文件输入流对象
FileInputStream fis = new FileInputStream("文件");
// 创建Properties集合
Properties list = new Properties();
//Properties集合中的load()加载方法
list.load(fis); // --> 将文件里的数据加载到Properties集合中
// 获取数据
String username = list.getProperty("username");
String password = list.getProperty("password");
System.out.println(username);
System.out.println(password);
(五)java.io.File类使用
掌握File类的常用方法。
自用的复习小总结,欢迎大佬们多多指点。



