问题
I have the simple code:
try (FileReader file = new FileReader(messageFilePath);
BufferedReader reader = new BufferedReader(file)) {
String line;
while ((line = reader.readLine()) != null) {
////
}
}
I want to write something like that:
FileReader file = null;
///.....
try(file = (file == null ? new FileReader(messageFilePath) : file);
BufferedReader reader = new BufferedReader(file)) {
String line;
while ((line = reader.readLine()) != null) {
////
}
}
It is allows me to reuse FileReader
. Is it possible? If not, how to correctly reuse FileReader
? I use java 8
, if it is important.
回答1:
You always have to define a new variable part of try-with-resources block. It is the current limitation of the implementation in Java 7/8. In Java 9 they consider supporting what you asked for natively.
You can however use the following small trick:
public static void main(String[] args) throws IOException {
FileReader file = null;
String messageFilePath = "";
try (FileReader reader = file = (file == null ? new FileReader(messageFilePath) : file);
BufferedReader bufReader = new BufferedReader(file)) {
String line;
while ((line = bufReader.readLine()) != null) {
////
}
}
}
来源:https://stackoverflow.com/questions/28702219/how-to-use-try-with-resources-with-if-statement