java直接return的文件流如何关闭

Python017

java直接return的文件流如何关闭,第1张

代码如下:

import java.io.File

import java.io.FileInputStream

import java.io.FileOutputStream

import java.io.IOException

public class App {

public static void main(String[] args) throws IOException {

// 第一种方式,稍嫌麻烦

FileOutputStream outputStream = null

try {

outputStream = new FileOutputStream(new File("data.txt"))

outputStream.write(new byte[] { 0x11, 0x22, 0x33, 0x44 })

// 在这里可以直接 return, 会调用 finally 中的代码

} finally {

if (outputStream != null) {

try {

outputStream.close()

} catch (IOException e) {

}

}

}

// 第二种方式,比较简洁,不用显式调用 close(), 会自动调用 close()

try (FileInputStream inputStream = new FileInputStream(new File("data.dat"))) {

byte[] buf = new byte[4]

inputStream.read(buf)

// 可以在这里调用 return ,在这个{}代码块结束时,close 会自动执行,

}

}

}

最好声明在一个特定的作用域里面,这样作用域一到自己就释放掉了,也就不存在什么你来关闭了,因为很多内置类析构函数都是有很完整的系统垃圾回收机制。不要做重复的事,当然如果你需要关闭之后在打开,你可以使用手动关闭。