IO流的异常处理
在JDK1.7之后,出现了一种新的关闭流的方式。如果类实现了AutoCloseable接口,那么就可以使用这种方式让流自动关闭。
try(
// 要自动关闭的流,只要实现了AutoCloseable接口,就不必在finally中进行流的关闭,系统会自动关闭流
// 其他的异常处理依旧
){
}
字符缓冲流
BufferedWriter(Writer w) 字符缓冲输出流
使用构造方法时,传入字符输出流。缓冲流的作用是让流更高效,传入哪个流,就对哪个流高效。
BufferedWriter的特有方法:
newLine() 换行符
该方法具有平台无关性。
BufferedReader(Reader r) 字符缓冲输入流
BufferedReader的特有方法:
readLine();
一行一行的读取,返回字符串,不包含换行符,读取完毕后,会返回null。
Properties(双列集合) 继承自Hashtable
该集合是唯一能和IO流产生关系的集合。
Properties特有的添加方法:
// 只能添加字符串
setProperty(String s1 , String s2)
// 读取文件 最终会把数据加载到集合中
// 文件格式 key=value
// 文件名字规范:一般把Properties集合可以直接加载的文件的后缀名都使用properties来标识
// 把数据加载到集合当中
load(InputStream);
// 参数1是一个输出流
// 参数2是添加注释,一般不写,中文注释是乱码
store(OutputStream, null);
序列化和反序列化流
ObjectOutputStream
序列化流的创建
ObjectOutputStream oos = new ObjectOutputStream(FileOutputStream);
如果想对这个类进行序列化,必须实现序列化接口Serializable
ObjectInputStream
反序列化流的创建
ObjectInputStream ois = new ObjectInputStream(FileInputStream);
反序列化在读取对象时,需要依赖相应的class文件来读取,没有相应的class文件,会出现ClassNotFoundException。 一般在序列化一个类的时候,会给该类生成一个序列化ID。