Java7对资源释放操作的简化

/**
 * 学会使用finally释放资源
 */
public class TryCatchResourceDemo {

    public static void main(String[] args) {

        try (
                // 这里面只能放置资源对象,用完会自动关闭,自动调用资源对象的close方法关闭资源(即使出现异常也会做关闭操作)
                // 1. 创建一个字节输入流管道与原文件接通
                InputStream inputStream = new FileInputStream("D:\\ideaProject\\reflectDemo\\src\\data03.txt");
                // 2. 创建一个字节输出流管道与目标文件接通
                OutputStream outputStream = new FileOutputStream("D:\\ideaProject\\reflectDemo\\src\\new.txt");

                // int age = 23;  // 这里只能放资源
                MyConnection myConnection = new MyConnection();
                ){

            // 3. 定义一个字节数组转移数据
            byte[] buffer = new byte[1024];
            int len;    // 记录每次读取的字节数
            while ((len = inputStream.read(buffer)) != -1) {
                outputStream.write(buffer, 0, len);
            }
            System.out.println("复制完成了!");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class MyConnection implements AutoCloseable {

    @Override
    public void close() throws Exception {
        System.out.println("连接资源被成功释放了!");
    }
}

复制完成了!
连接资源被成功释放了!

在try()括号中放置资源对象(用完会自动关闭),该对象必须继承 AutoCloseable接口才可以,否则会报错。

你可能感兴趣的:(Java基础,java)