方法一:传统方法
也是最基本的资源关闭的方法
void test1() {
File file = new File("a.txt");
File file2 = new File("b.txt");
//在try 代码块外声明流对象,保证在finally块里能用
InputStream in = null;
OutputStream out = null;
try {
//可能出现异常的代码
in = new FileInputStream(file);
out = new FileOutputStream(file2);
byte[] b = new byte[4];//创建缓存区,存储读取的数据
int len = -1;//表示已经读取了多少个字节,如果len返回-1,表示已经读到最后
while ((len = in.read(b)) != -1) {
//打印出读取的数据
System.out.println(new String(b, 0, len));
out.write(b, 0, len);
}
} catch (Exception e) {
//处理异常
e.printStackTrace();
} finally {
//一定会执行的代码
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
方法二:java7开始的自动资源关闭
模式:
try(
//打开资源代码
){
//可能出现异常的代码
}catch(Exception e){
e.printStackTrace();
}
void test2() {
File file = new File("a.txt");
File file2 = new File("b.txt");
try (
//打开资源代码
InputStream in = new FileInputStream(file);
OutputStream out = new FileOutputStream(file2);
) {
//可能出现异常的代码
byte[] b = new byte[4];//创建缓存区,存储读取的数据
int len = -1;//表示已经读取了多少个字节,如果len返回-1,表示已经读到最后
while ((len = in.read(b)) != -1) {
//打印出读取的数据
System.out.println(new String(b, 0, len));
out.write(b, 0, len);
}
} catch (Exception e) {
e.printStackTrace();
}
}
版权声明:本文为qq_39396275原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。