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

无法在Try Resource JAVA SE7中重新初始化FileOutputStream,java,intellij-idea,Java,Intellij Idea,正如您所知,JavaSE7引入了try资源特性,我也尝试在我的应用程序中实现它 这里有一个问题: try(FileOutputStream fos = new FileOutputStream(path)){ //........ some code fos = new FileOutputStream(newPath); // Getting Error! } 我的ide(IntelliJ IDEA)给了我这个错误“无法初始化最终变量fos” 如果我不使用try-resource功能,

正如您所知,JavaSE7引入了try资源特性,我也尝试在我的应用程序中实现它

这里有一个问题:

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

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

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

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


如果我不使用try-resource功能,那么我应该如何使用try-resource将fos重新斜体化呢?

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


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

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


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

我认为错误消息非常简单:final variable我认为错误消息非常简单:final variable