Olá, Pamela. Tudo bem?
Quando você move o código que estava no main para um método separado, como importarPetsDoAbrigo(), o escopo das variáveis muda. No main, a variável reader estava sendo usada diretamente dentro de um bloco try-catch, o que significa que ela era inicializada e usada dentro do mesmo escopo.
Ao mover essa lógica para um método separado, é necessário garantir que a variável reader seja inicializada antes de ser utilizada, porque agora ela é declarada fora do bloco try-catch. Inicializar a variável como null antes do bloco try é uma prática comum para garantir que ela esteja disponível em todo o escopo do método e possa ser usada após o bloco try-catch.
Aqui está um exemplo simplificado para ilustrar:
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(nomeArquivo));
// Lógica de leitura do arquivo
} catch (IOException e) {
System.out.println("Erro ao carregar o arquivo: " + nomeArquivo);
}
// Aqui, o 'reader' ainda está acessível, mesmo após o bloco try-catch
Essa inicialização fora do bloco try-catch permite que você use o reader em outras partes do método, como no loop while que lê as linhas do arquivo. Se não fosse inicializado antes do bloco try-catch, o compilador reclamaria, pois poderia haver um caminho de execução onde reader não seria inicializado, mas ainda assim seria utilizado.
Espero ter ajudado e bons estudos.
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!