JDK7之前的处理
之前的入门练习,我们一直把IO异常抛出,实际开发中并不能这样处理,建议使用try…catch…finally 代码块,处理异常部分.
案例需求: 将readTest的内容copy到copyTest
代码使用演示
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo01 {
public static void main(String[] args) {
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("day16/testFiles/readTest");
fw = new FileWriter("day16/testFiles/copyTest");
int len;
char[] chars = new char[10];
while ((len = fr.read(chars)) != -1) {
fw.write(chars,0,len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fw != null)
fw.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fr != null) {
fr.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
运行结果:
JDK7的处理
还可以使用JDK7优化后的 try-with-resource 语句,该语句确保了每个资源在语句结束时关闭。所谓的资源(resource)是指在程序完成后,必须关闭的对象。总之来说, 上流!
格式:
try (创建流对象语句,如果多个,使用';'隔开) {
// 读写数据
} catch (IOException e) {
e.printStackTrace();
}
还是同样的案例, 代码使用演示:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Demo02 {
public static void main(String[] args) {
try(FileReader fr = new FileReader("day16/testFiles/readTest");
FileWriter fw = new FileWriter("day16/testFiles/copyTest")) {
int len;
char[] chars = new char[10];
while ((len = fr.read(chars)) != -1) {
fw.write(chars,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}