java输入,输出流如何无需finally关闭资源

例子:往一个文件内写东西

以前的写法,总是在流处理的最后都需要finally关闭资源,这样多了就会觉得很麻烦

    private static void oldtest(String filePath) throws FileNotFoundException {
        OutputStream out = new FileOutputStream(filePath);
        try {
            out.write((filePath+"我就是测试下用Java写点东西进来").getBytes());
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                out.close();
            }catch (Exception e){
                e.printStackTrace();
            }

        }
    }

  Java7 里的try...catch...resource 写法可以流会自动回收,只需在try()括号里写流对象,这样就不用老是finally了

   //自动关闭资源写法
    private static void newtest(String filePath) throws FileNotFoundException {

        try(OutputStream out = new FileOutputStream(filePath);){
            out.write("用try...catch..resource写法试试会不会自动关闭资源".getBytes());
        }catch (Exception e){
            e.printStackTrace();
        }
    }

  我们可以看下源代码:

这个outputStream实现了Closeable这个类,看下Closeable源代码

看下AutoCloseable源代码:

注意:

1、使用该写法,需要该类有有实现AutoCloseable类

2、实现了AutoCloseable接?的类,在try()?声明该类实例的时候,try结束后?动调?的 close?法,这个动作会早于finally?调?的?法

3、不管是否出现异常,try()?的实例都会被调?close?法

4、try??可以声明多个?动关闭的对象,越早声明的对象,会越晚被close掉

原文地址:https://www.cnblogs.com/zexin/p/12275948.html

时间: 2024-10-11 14:42:47

java输入,输出流如何无需finally关闭资源的相关文章

Java输入输出流总结(转载)

Java输入输出流总结 一.介绍 流是数据源或数据目标的输入或输出设备的抽象表示.支持流输入和输出的主要包是java.io,但是也有其他的包,比如java.nio.file.java.io包支持两种类型的流--包含二进制数据的字节流和包含字符数据的字符流. 当写数据到字节流中时,数据会以字节序列的形式写到流中,与它们在内存中的形式完全一样,在这个过程中不会发生数据转换.即java.io包中的InputStream和OutputStream的派生类,通常用来读取二进制数据,如图像和声音. 将字符串

Java输入输出流(3)

8. 字符流Writer/Reader  Java中字符是采用Unicode标准,一个字符是16位,即一个字符使用两个字节来表示.为此,JAVA中引入了处理字符的流. 1. Reader抽象类 用于读取字符流的抽象类.子类必须实现的方法只有 read(char[], int, int) 和 close().但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能. 1) FileReader :与FileInputStream对应 主要用来读取字符文件,使用缺省的字符编码,有三种构

Java输入输出流(1)

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较

Java 输入输出流 转载

转载自:http://blog.csdn.net/hguisu/article/details/7418161 1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在

java输入输出流及文件操作

*Author:Yuanhonglong *Date:2013-11-29 *1948281915package mine.file.Read_Write;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;import java

Java输入/输出流体系

在用java的io流读写文件时,总是被它的各种流能得很混乱,有40多个类,理清啦,过一段时间又混乱啦,决定整理一下!以防再忘 Java输入/输出流体系 1.字节流和字符流 字节流:按字节读取.字符流:按字符读取. 字符流读取方便,字节流功能强大,当不能用字符流时,可以用字节流. 字节流基类:InputStream.OutputStream InputStream方法: OutputStream方法: 字符流基类:Reader.Writer Reader方法: Writer方法: 2.输入输出流体

JAVA输入/输出流(字节流、字符流、缓冲流)

JAVA输入/输出流 前期知识准备 1.基本java语法 基本原理: 程序在运行期间,可能需要从外部的存储媒介或其他程序中读入所需要的数据,这就需要使用输入流对象.输入流的指向称作它的源,程序从指向源的输入流中读取源中数据.另一方面,程序在处理数据后,可能需要将处理结果写入到永久的存储媒介中或传给其他应用程序,这就需要使用输出流对象.输出流的指向称作它的目的地,程序通过向输出流中写入数据把数据传送到目的地. (本博文只给出文件字节流,文件字符流,缓冲流实例) 文件字节流: FileInputSt

JAVA输入/输出流程序例题(文件和目录、字节流、字符流)

一.文件和目录 1.显示文件的基本信息. 2.显示目录的基本信息. 3.在指定目录下创建单个文件. 4.指定目录下创建多个临时文件. 二.字节流 1.生成ZIP压缩文件 2.解压缩zip文件 3.生成Excel文件 4.读取excel文件 5.生成PDF文件 6.读取PDF文件中的内容 7.利用poi读取Word文件中的内容. 三.字符流 1.追加文件内容 2.读取jar包内容 3文件的加密/解密操作 JAVA加包+++右键项目+BuildPath+Add External Achievees.

Java输入输出流

1.什么是IO Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列.Java的I/O流提供了读写数据的标准方法.任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法. Java.io是大多数面向数据流的输入/输出类的主要软件包.此外,Java也对块传输提供支持,在核心库 java.nio中采用的便是块IO. 流IO的好处是简单易用,缺点是效率较低.块IO效率很高,但编程比较