如何将 try-with-resources 与 if 语句一起使用?

2024-05-07

我有简单的代码:

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.
如果重要的话,我使用 Java 8。


您始终必须在 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) {
            ////
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 try-with-resources 与 if 语句一起使用? 的相关文章

随机推荐