Sobes.tech
Junior — Middle

Como garantir o fecho correto do ficheiro em caso de exceção durante o seu processamento?

sobes.tech IA

Resposta da IA

Em Java, para fechar corretamente um ficheiro em caso de exceção, recomenda-se usar a construção try-with-resources, que fecha automaticamente o recurso após a execução do bloco try, mesmo que ocorra uma exceção.

Exemplo:

try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
    String line;
    while ((line = reader.readLine()) != null) {
        // processamento da linha
    }
} catch (IOException e) {
    e.printStackTrace();
}

Se, por alguma razão, não for possível usar try-with-resources (por exemplo, em versões antigas do Java), deve-se fechar o recurso no bloco finally:

BufferedReader reader = null;
try {
    reader = new BufferedReader(new FileReader("file.txt"));
    String line;
    while ((line = reader.readLine()) != null) {
        // processamento da linha
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    if (reader != null) {
        try {
            reader.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

Desta forma, o recurso é garantido que será fechado, prevenindo fugas de memória e bloqueios de ficheiros.