JDK在1.7之后出现了自动关闭类的功能,该功能的出现为各种关闭资源提供了相当大的帮助,这里我们谈一谈自动关闭类。
JDK1.7之后出现了一个重要的接口,以及改造了一个重要的方法结构:
1、AutoCloseable自动关闭接口
2、try(){}--catch{}--finally{}
相应的
一些资源也实现了该接口,如preparedStatement、Connection、InputStream、outputStream等等资源接口。
接口的实现类要重写close()方法,将要关闭的资源定义在try()中,这样当程序执行完毕之后,资源将会自动关闭。自定义类如果要进行自动关闭,只需要实现AutoCloseable接口重写close()方法即可,
同时也只有实现了AutoCloseable接口才能将,自定义类放入到try()块中,否则编译不能通过,举例说明
代码如下:
<pre name="code" class="java">class ReadTxt extends AutoClassable {
@Override
public void close() throws Exception {
System.out.println("ReadTxt close");
}
public String readTextValue(String path){
StringBuffer sb = new StringBuffer();
try(BufferedReader br = new BufferedReader(new FileReader(path))){
int line;
while((line = br.read())!=-1){
sb.append(br.readLine()+"\n")
}
}
return sb.toString();
}
}
class MainTest {
public static void main(String[] args) {
try (ReadTxt rt = new ReadTxt()) {
String line = rt.readTextValue("G:\\学习文档\\test.txt");
System.out.println(line);
}
}
}