Как использовать Try-with-resources с оператором if?
У меня есть простой код:
try (FileReader file = new FileReader(messageFilePath);
BufferedReader reader = new BufferedReader(file)) {
String line;
while ((line = reader.readLine()) != null) {
////
}
}
Я хочу написать что-то вроде этого:
FileReader file = null;
///.....
try(file = (file == null ? new FileReader(messageFilePath) : file);
BufferedReader reader = new BufferedReader(file)) {
String line;
while ((line = reader.readLine()) != null) {
////
}
}
Это позволяет мне использовать повторно FileReader
, Является ли это возможным? Если нет, то как правильно использовать повторно FileReader
? я использую java 8
, если это важно.
1 ответ
Решение
Вы всегда должны определить новую переменную часть блока try-with-resources. Это текущее ограничение реализации в Java 7/8. В Java 9 они рассматривают поддержку того, что вы просили изначально.
Однако вы можете использовать следующий маленький трюк:
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) {
////
}
}
}