如何在 if 语句中使用 try-with-resources?
How to use try-with-resources with if statement?
我有简单的代码:
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
?
P.S.
我用Java8,如果重要的话。
您总是必须定义 try-with-resources 块的新变量部分。 这是Java7/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) {
////
}
}
}
我有简单的代码:
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
?
P.S.
我用Java8,如果重要的话。
您总是必须定义 try-with-resources 块的新变量部分。 这是Java7/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) {
////
}
}
}