扫描仪资源泄漏

时间:2018-06-06 13:01:19

标签: java java.util.scanner args resource-leak try-finally

今天我编写了一个Java代码,用于读取名为input1.txt和input2.txt的2个txt文件的输入,并解决了2个编程问题。它从终端运行,如:

java berkSol input1.txt input2.txt

我正在程序中使用Scanner读取输入。我有2个Scanner对象。我的代码基本上是这样的:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
public class berkSol {

    public static void main(String[] args) throws FileNotFoundException {

        if(args.length > 0) {   

            // The Solution of Problem1 begins
            File file1 = new File(args[0]);
            Scanner reader = new Scanner(file1); // The Scanner that is going to read file1.
            try {
                .
                .
                .
                // The Solution of Problem 2 begins
               File file2 = new File(args[1]);
                reader = new Scanner(file2); // The Scanner that is going to read file2.
                .
                .
                .
            }
            finally {
                if(reader!=null)
                reader.close();
            }
        } // End Of Check on the Arguments Length   
    } // End of Main
    .
    .
    .
} 

Visual Studio Code给了我关于资源泄漏的警告,所以我最后添加了finally块。但现在,它正在为内部扫描仪提供完全相同的警告。我将它初始化为file2后,我没有使用读取file1的扫描程序。我认为,因为他们的名字是相同的,当我在try块后关闭时,第二个也不会泄漏任何资源。

我的程序正在运行,但由于资源泄漏,我不知道是否会出现任何问题。

任何人都可以告诉我为什么我的第二台扫描仪会泄漏,我该怎么做以防止它,如果我不解决它会发生什么不好?

我将不胜感激任何帮助。提前谢谢。

0 个答案:

没有答案