Ler um ficheiro em Java
Prepare um ficheiro de texto simples note.txt na mesma pasta do programa. Coloque uma linha curta: oak. Abra Reader.java, crie um File para note.txt, envolva-o num Scanner, imprima nextLine(), depois close o scanner. Compile com javac Reader.java e execute java Reader. O ecrã deve mostrar oak. Uma segunda demo abre missing.txt e pára com FileNotFoundException. Deixe escrever ficheiros com Java para a página seguinte — crie note.txt à mão num editor.
Ler uma linha que já está no disco
As páginas anteriores pararam em excepções que apanhou ou lançou. Esta página chega a letras que ficam num ficheiro depois do programa terminar. Abra um ficheiro de ensino Reader.java. Mantenha o nome público Reader para coincidir com o ficheiro. Apague demos de lançamento Signal, blocos catch Guard, paragens de array Alarm e qualquer Scanner que leia do teclado com nextLine de System.in. O programa não deve esperar digitação. Ler um ficheiro ainda usa Scanner, mas o construtor recebe um File, não o teclado.
Precisa de três import no topo:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
Marque main com throws FileNotFoundException para um ficheiro em falta aparecer como excepção verificada. Dentro de main nomeie o ficheiro:
File note = new File("note.txt");
Construa um scanner sobre esse ficheiro:
Scanner scan = new Scanner(note);
Imprima a primeira linha:
System.out.println(scan.nextLine());
Termine a leitura:
scan.close();
Antes de compilar, crie note.txt junto a Reader.java e escreva exactamente oak na primeira linha. Grave o texto. O programa Java não cria esse ficheiro nesta página.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Reader {
public static void main(String[] args) throws FileNotFoundException {
File note = new File("note.txt");
Scanner scan = new Scanner(note);
System.out.println(scan.nextLine());
scan.close();
}
}
Na pasta com Reader.java e note.txt, execute javac Reader.java. Quando parênteses, chavetas e pontos e vírgula coincidem, javac não escreve linha própria. Depois java Reader — não java Reader.java. Retire .java do comando. Se javac não encontrar File ou Scanner, faltam ou estão errados os import — repõe-nos antes de outras erros.
O ecrã mostra oak. O scanner leu a primeira linha do disco e imprimiu. O programa não deve pausar para teclado. Se o terminal esperar digitação, Scanner ainda está em System.in em vez de File note. Corrija o construtor. Se vir empty ou pilha IllegalArgumentException, ainda corre Signal — mude para java Reader com o ficheiro de leitura. Se vir 2 ou blocked, ainda lança Alarm ou Guard.
Percorra o caminho feliz uma vez. Java começa em Reader.main. O objecto File guarda o nome note.txt. O Scanner abre esse nome. nextLine puxa a primeira linha. println mostra oak. close termina o scanner. Nada mais deve imprimir. Sem note.txt na pasta, crie o texto primeiro.
Aqui nextLine significa a linha seguinte no ficheiro, não um pedido ao utilizador. O mesmo nome de método confunde após a página de input: mesmo nome, fonte diferente. As letras oak vivem no texto; a classe Java só lê.
📊 File and Scanner roles
| Piece | What it does on this page |
|---|---|
| File | holds the disk name such as note.txt |
| Scanner | reads lines from that File with nextLine |
| close | finishes the Scanner read so the file handle is released |
Um nome em falta lança FileNotFoundException
Um segundo programa mantém a mesma forma mas aponta a um nome que não está na máquina: missing.txt. Não crie esse ficheiro. A execução deve parar com FileNotFoundException.
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Reader {
public static void main(String[] args) throws FileNotFoundException {
File note = new File("missing.txt");
Scanner scan = new Scanner(note);
System.out.println(scan.nextLine());
scan.close();
}
}
Compile com javac Reader.java, depois execute java Reader. Desta vez não imprime oak. O terminal reporta FileNotFoundException. A cláusula throws em main deixa essa excepção verificada sair sem catch aqui. Já praticou catch; o ponto é reconhecer que um nome em falta pára a leitura. A ortografia importa: FileNotFoundException. Dizer só «erro» é vago.
Se criou missing.txt por acidente, apague-o. Prefira a demo bem-sucedida de note.txt para ecrã calmo com oak. Use a demo em falta só para ver FileNotFoundException. Mude ficheiros de propósito para não misturar sucesso e paragem num só main.
Não invente escrita Java para criar note.txt aqui. Um editor basta para praticar leitura. A página seguinte escreve com Java. Esta página mantém leitura clara e paragem clara por nome em falta.
Comparado com throw em Signal
Na página de throw, java Signal parava com IllegalArgumentException quando as chávenas estavam vazias. Aqui a paragem por ficheiro em falta é FileNotFoundException, e o caminho feliz imprime uma linha do disco. Mantenha ficheiros Signal como história; execute java Reader para demos de ficheiro.
Wrappers, arrays e catch ficam como história. Hoje os novos tokens são File, Scanner em ficheiro, nextLine do disco e FileNotFoundException.
O que esta página deixa para escrever ficheiros
Esta página só lê um ficheiro existente ou pára quando falta o nome. A seguinte mostra escrever letras com Java. Fique com a leitura de oak e o nome FileNotFoundException. Ainda não adicione chamada de escrita obrigatória nos demos Reader.
Antes de escrever ficheiros
Pode ler note.txt com Scanner e ver oak. Pode abrir missing.txt e ver FileNotFoundException. Compile Reader.java e execute java Reader para cada demo. Crie note.txt à mão junto da classe. A página seguinte é escrita, onde o programa guarda texto.
Mantenha a leitura bem-sucedida para ecrã calmo, a demo em falta para ver a paragem, e escrita Java fora desta página. Quando oak aparece após java Reader com note.txt presente, a leitura cumpriu o trabalho e está pronto para escrever.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo