一、JDK之前的处理
实际开发中,建议使用
try...catch...finally
代码块处理异常部分。
FileWriter fw = null;
try {
fw = new FileWriter(".\\day_09\\a.txt");
fw.write("我是一个兵,来自老百姓");
} catch (IOException e){
e.printStackTrace();
} finally {
try{
if(fw != null)
fw.close();
} catch (IOException e){
e.printStackTrace();
}
}
二、JDK7的处理【拓展了解】
使用优化的try-with-resource
语句,确保了每个资源在结束时关闭。
try(创建流对象语句,如果多个,用';'隔开) {
// 读写数据
} catch(IOException e)
e.printStackTrace();
try (FileWriter fw = new FileWriter("a.txt")){
fw.write("哈哈");
} catch (IOException e) {
e.printStackTrace();
}
三、JDK9的处理【拓展了解】
JDK9中
try-with-resource
的改进,对于引入对象的方式,支持的更加简洁。被引入的对象,同样可以自动关闭,无需手动close
改进后的格式
// 被final修饰的对象
final Resource re1 = new Resource("re1");
// 普通对象
Resource re2 = new Resource("re2");
try (re1;re2){
// 读写
}
如下演示
final FileReader fr = new FileReader("day_09\\a.txt");
FileWriter wr = new FileWriter("day_09\\b.txt");
try (fr;wr){
int b;
while ((b = fr.read()) != -1){
wr.write(b);
}
}
// 当然,也可以写catch
try (fr;wr){
int b;
while ((b = fr.read()) != -1){
wr.write(b);
}
} catch (IOException e) {
e.printStackTrace();
}