Утечка ресурсов сканера - PullRequest
0 голосов
/ 06 июня 2018

Сегодня я написал код Java, который читает входные данные из двух текстовых файлов с именами input1.txt и input2.txt и решает 2 проблемы программирования.Он запускается с терминала, как:

java berkSol input1.txt input2.txt

Я читаю свои входы со сканером в программе.У меня есть 2 объекта сканера.Мой код в основном такой:

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 предупреждал меня об утечке ресурсов, поэтому в конце я добавил этот блок наконец.Но теперь он дает то же самое предупреждение для внутреннего сканера.Я не использую сканер, который читает файл1 после того, как я инициализирую его в файл2.Я подумал, что, поскольку их имена совпадают, при закрытии после блока try второй из них не пропустит ни одного ресурса.

Моя программа работает, но я не знаю, могут ли быть какие-либо проблемы, потому чтоутечки ресурса.

Может кто-нибудь сказать мне, почему мой второй сканер протекает и что я могу сделать, чтобы предотвратить это, и что может случиться, если я не исправлю это?

Я бы хотелценю любую помощь.Заранее спасибо.

...