在JDK1.7之前,关闭流有时候会非常麻烦,有时需要嵌套好多层,在JDK1.7之后出现了一种新的语法可以让代码书写简化不少。- import java.io.*;
- public class CopyByBuffer {
- public static void main(String[] args) throws IOException {
- try ( // 把需要使用的资源在小括号中定义, 自动关闭的对象必须实现AutoCloseable接口
- FileInputStream fis = new FileInputStream("file/taylor.jpg");
- FileOutputStream fos = new FileOutputStream("file/copy.jpg");
- MyStream ms = new MyStream();
- ) {
- byte[] buffer = new byte[1000];
- int length;
- while ((length = fis.read(buffer)) != -1)
- fos.write(buffer, 0, length);
- } // 不需要手动关闭流,大括号执行结束之后, 会把小括号中创建的资源自动关闭
- }
- }
- class MyStream implements AutoCloseable {
- public void close() {
- System.out.println("关闭自己的流!");
- }
- }
复制代码 |
|