zoukankan      html  css  js  c++  java
  • 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();
            }
        }
    }
    

      

  • 相关阅读:
    【Codeforces542E】Playing on Graph [Bfs][Dfs]
    【Codeforces441E】Valera and Number [DP]
    单链表快速排序
    一个简易内存池(C++)
    最长回文子串---Manacher算法
    hihocoder 1015题
    简单的字典树(前缀树)
    C++获取基类指针所指子类对象的类名
    Muduo阅读笔记---net(三)
    C++线程安全的单例模式
  • 原文地址:https://www.cnblogs.com/BINGJJFLY/p/13155925.html
Copyright © 2011-2022 走看看