Java: автоматическое c закрытие файлов в BufferdStreamReader, чтобы избежать исключения FileNotFoundException (слишком много открытых файлов) - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть устаревший код Java, который открыл файл и прочитал строки, как показано в следующем фрагменте кода метода:

BufferedReader brdr = 
    new BufferedReader(new InputStreamReader(new FileInputStream(filenm)));
while ((String line = brdr.readLine()) != null) {   
    // ...
} 

Переменная fiilenm передается в метод при вызове. Чтобы избежать java.io.FileNotFoundException: ... (Too many open files), я должен использовать brdr.close(), чтобы быть на более безопасной стороне?

1 Ответ

0 голосов
/ 23 апреля 2020

Используйте try-with-resources.

Readers / InputStreams реализуют интерфейс AutoCloseable, try-with-resources использует его. поэтому он возвращал ресурсы, когда ваша программа покинула блок try.

try (BufferedReader brdr = new BufferedReader(new InputStreamReader(new FileInputStream(filenm)))) {
    while ((String line = brdr.readLine()) != null) {   
      . ..
    } 
} catch (Exception e) {
    e.printStackTrace();
}

ссылка: oracle документация

...