一般来说,读写io流一般会创建两个对象,分别是:
比如
BufferedReader reader = new BufferedReader(new InputStreamReader(new File("xx")));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new File("vvv")));
try{
reader.readLine();
writer.write(xxxxx);
}catch(Exception e){
e.printStackTrace();
}finally{
if(reader!=null){}
if(writer !=null){}
}
这样写太繁琐
如果用了guava的closer后,就简单很多了
Closer closer = Closer.create();
closer .register(reader);
closer.register(writer);
最后在finally里写closer.close();,他会把两个已注册的io流一起关闭,当然IOException是必须要try..catch或者throw的。
还有一个java7的新特新,就是
try(PrintWriter out = new PrintWriter(new File("d:/xxx.txt"))){
out.println(xxxxx);
}catch(Exception e){
e.printStackTrace();
}
这种写法的优势是不用手动关闭流了,会自动关闭的,不用把关闭语句写在finally块里