什么是资源泄漏?

时间:2014-11-11 16:24:50

标签: java.util.scanner

我正在使用Scanner类,并不断遇到警告,说我应该关闭资源泄漏。它之前没有影响我,所以我忽略了它。这会在将来给我带来什么问题吗?如何关闭扫描仪?

2 个答案:

答案 0 :(得分:0)

如果用于初始化扫描仪的基础对象没有泄漏,则扫描仪不会泄漏任何资源。您收到编译器警告,因为扫描程序实现Closable并且接口指定在使用后必须关闭(缺少其他单词) resource 。通常,您需要使用try-with-resources语句在范围结束时自动关闭资源。

try (Scanner scanner = new Scanner("my input string")) {
    while (scanner.hasNext()) {
        process(scanner.next());
    }
}

参考:https://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html

答案 1 :(得分:0)

您需要关闭扫描仪类:

Scanner in = new Scanner(System.in);
in.close(); //Here you're closing it

您可以尝试在try / catch块中使用扫描仪,以确保始终关闭扫描仪:

Scanner in = new Scanner(System.in);
try {
   //Use your Scanner
} finally {
    in.close();
}