Carregando...

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.

Reader prints oak from note.txt

java
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.

Reader missing file throws

java
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

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 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