• 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();
            }
        }
    }
    

      

  • 相关阅读:
    宾得镜头资料
    先感动自己才能感动别人
    关于单反相机中的APSC
    K10D和凤凰镜头
    Vista的新快捷键
    微软雅黑字体“演”字变“漠”字的bug
    Windows XP无线零配置服务
    剑走偏锋,用XP的启动管理来搞定Vista、XP双系统
    BCB中的目录选择对话框的实现
    MagicAjax 使用
  • 原文地址:https://www.cnblogs.com/BINGJJFLY/p/13155925.html
Copyright © 2020-2023  润新知