gpt4 book ai didi

java - finally { if (inputStream != null) { inputStream.close();

转载 作者:行者123 更新时间:2023-11-29 08:42:29 26 4
gpt4 key购买 nike

我不知道怎么理解:

{
if (inputStream **!= null**) {
inputStream.close();

来自那个例子:

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

BufferedReader inputStream = null;
PrintWriter outputStream = null;

try {
inputStream = new BufferedReader(new FileReader("xanadu.txt"));
outputStream = new PrintWriter(new FileWriter("characteroutput.txt"));

String l;
while ((l = inputStream.readLine()) != null) {
outputStream.println(l);
}
} finally {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
}
}}

当提供任何数据时,inputStream 正在关闭???

最佳答案

这意味着无论何时 try block 完成(成功与否),它都会尝试关闭 inputStream 中的流( outputStreamfinally ) block ,但作为 try创建 BufferedReader 的实例时 block 可能会失败或 PrintWriter , 你需要先检查它是否不是 null否则你会得到一个 NPE。

可以考虑使用 try-with-resouces 语句以避免必须检查 null并调用 close()显式地这样可以大大简化您的代码。

try (BufferedReader inputStream = new BufferedReader(new FileReader("xanadu.txt"));
PrintWriter outputStream = new PrintWriter(new FileWriter("characteroutput.txt")) {
// your code here
}

关于java - finally { if (inputStream != null) { inputStream.close();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39063865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com