无法在Try-Resource JAVA SE7中重新初始化FileOutputStream

时间:2014-08-02 19:26:10

标签: java intellij-idea

如您所知,JAVA SE7具有完善的尝试资源功能,我已尝试在我的应用程序中实现。

这是一个问题:

try(FileOutputStream fos = new FileOutputStream(path)){

//........ some code

fos = new FileOutputStream(newPath); // Getting Error!

}

我的ide(IntelliJ IDEA)给了我这个错误“无法初始化最终变量fos”

如果我不使用尝试资源功能,那么没有问题,那么我应该如何使用try资源重新启动fos?

1 个答案:

答案 0 :(得分:4)

你不能,因为这个语法糖也声明资源引用为final。这是有道理的,因为整个点是参考将在块的末尾关闭。如果您可以自由地丢失块中的引用,它会有多大用处?

意思是,几乎肯定有一种不同的,更好的方式来表达你想要的东西。也许你正在循环你打开的资源。每个都应该打开和关闭。您可以在内部try-catch中执行