• JDK7-try-with-resources


    jdk7之前的写法try-catch-finally

    package com.wjz.jdk7.before;
     
    import java.io.*;
     
    public class TryCatchFinally {
     
        private static final String src = "D:/src.txt";
        private static final String dst = "D:/dst.txt";
     
        public static void main(String[] args) {
            copy(src, dst);
            System.out.println("复制成功!");
        }
     
        public static void copy(String src, String dst) {
            InputStream in = null;
            OutputStream out = null;
            try {
                in = new FileInputStream(src);
                out = new FileOutputStream(dst);
                byte[] buff = new byte[1024];
                int n;
                while ((n = in.read(buff)) >= 0) {
                    out.write(buff, 0, n);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (out != null) {
                    try {
                        out.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    jdk7之后的写法try-with-resources

    package com.wjz.jdk7.after;
    
    import java.io.*;
    
    /**
     * try-with-resources 声明要求其中定义的变量实现 AutoCloseable 接口,
     * 这样系统可以自动调用它们的close方法从而替代了finally中关闭资源的功能,
     * 甜甜的语法糖
     */
    public class TryWithResources {
    
        private static final String src = "D:/src.txt";
        private static final String dst = "D:/dst.txt";
    
        public static void main(String[] args) {
            copy(src, dst);
            System.out.println("复制成功!");
        }
    
        public static void copy(String src, String dst) {
            try (InputStream in = new FileInputStream(src);
                 OutputStream out = new FileOutputStream(dst)) {
                byte[] buff = new byte[1024];
                int n;
                while ((n = in.read(buff)) >= 0) {
                    out.write(buff, 0, n);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

    自定义资源

    package com.wjz.jdk7.autoclose;
    
    import java.io.IOException;
    
    public class Resource implements AutoCloseable {
    
        public void sayHello() {
            System.out.println("hello");
        }
    
        @Override
        public void close() throws IOException {
            System.out.println("Resource is closed");
        }
    
        public static void main(String[] args) {
            try (Resource r = new Resource()) {
                r.sayHello();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    

      

  • 相关阅读:
    P1439 【模板】最长公共子序列
    DP,入门???
    关于Eclipse在servlet中连接数据库时出现驱动加载失败的解决
    JSP学习(JavaBean)
    HTML随笔3
    CSS随笔3
    计算机网络随笔
    基本命令行操作1(java编译)
    Javascript随笔2(JQuery)
    Javascrip随笔1
  • 原文地址:https://www.cnblogs.com/BINGJJFLY/p/13155925.html
Copyright © 2020-2023  润新知