Slides PowerPoint

Propaganda
Aula 12
Ficheiros
Programação em Java 2006-2007
Operações de entrada/saída
a
n
t
e
s
entrada
saída
teclado
monitor
leitura
Programa
escrita
ficheiro
a
g
o
r
a
ficheiro
leitura
Programa
Programação em Java 2006-2007
escrita
2
Leitura
Para ler um ficheiro de texto
utilizamos as classes
FileReader e BufferedReader
do pacote java.io
Este bloco implementa o
tratamento de erros usando
excepções. Desta forma, se
ocorrer um erro na abertura do
ficheiro, o programa pode detectalo, visualizar uma mensagem e
terminar. Para isto é preciso
adicionar as palavras chaves
throws IOException à declaração
do procedimento main
Antes de terminar devemos
fechar o ficheiro
import java.io.*;
class Ex_12_1_lerFicheiro extends P1App {
static void main(String [] args) throws IOException {
String s, nomeFx;
// atribuir a nomeFx o nome do ficheiro
nomeFx = “teste1.txt”;
// declarar um descriptor para leitura de um ficheiro de texto
BufferedReader f = null;
try {
// abrir o ficheiro de texto
f = new BufferedReader(new FileReader(nomeFx));
} catch(Exception e) {
// ocorreu um erro na abertura do ficheiro, logo:
println("Impossível abrir o ficheiro " + nomeFx);
println("fim do programa...");
return;
}
s = f.readLine(); // ler a 1ª linha
while(s != null) { // o readLine devolve null no fim ficheiro
println(s);
// mostrar linha no ecrã
s = f.readLine(); // ler a linha seguinte
}
// fechar o ficheiro
Este ciclo permite ler um ficheiro
f.close();
linha a linha
}
}
Programação em Java 2006-2007
3
Escrita
Para escrever num ficheiro de
texto utilizamos as classes
FileWriter e BufferedWriter do
pacote java.io
Este bloco implementa o
tratamento de erros usando
excepções.
Este ciclo permite ler uma linha do
teclado e escreve-la no ficheiro até
que o utilizador introduzir <enter>
Antes de terminar devemos
fechar o ficheiro
import java.io.*;
class Ex_12_2_escreverFicheiro extends P1App {
static void main(String [] args) throws IOException {
String s, nomeFx= "novo.txt";
// declarar descritor para acesso ao ficheiro em modo escrita
BufferedWriter f = null;
try {
// abrir o ficheiro de texto
f = new BufferedWriter(new FileWriter(nomeFx));
} catch(Exception e) {
// ocorreu um erro na abertura do ficheiro, logo:
println("Impossível criar o ficheiro " + nomeFx);
println("fim do programa...");
return;
}
s = readLine();
// ler uma linha do teclado
while(s.length() > 0) { // termina quando digitar <enter>
f.write(s);
// escrever a linha no ficheiro
f.newLine();
// inserir mudança linha no ficheiro
s = readLine();
// ler outra linha do teclado
}
// fechar o ficheiro
f.close();
println("O conteúdo foi armazenado no ficheiro " + nomeFx);
}
}
Programação em Java 2006-2007
4
Problema 1
Criar um programa que leia um ficheiro com a listagem dos alunos de
uma turma e cria um ficheiro novo com as notas que obtiveram em
Programação em Java. O programa deverá funcionar da seguinte
forma:
1.
Pedir ao utilizador para introduzir via teclado os nomes do
ficheiro de entrada e do ficheiro de saída
2.
Mostrar o conteúdo do ficheiro de entrada (linha a linha), pedindo
a cada passo a nota da disciplina de Programação em Java obtida
pelo aluno listado
3.
Adicionar a nova informação no ficheiro final.
Ficheiro de entrada
Ficheiro de saída
a9845 João Silva Martins
a10200 Ana Maria Almeida
a15800 José Pedro Alves
…
a9845 João Silva Martins 16
a10200 Ana Maria Almeida 14
a15800 José Pedro Alves 17
...
Programação em Java 2006-2007
5
Problema 1.
Esquema do Algoritmo
Declaração de variáveis:
String nomeFx1, nomeFx2, s;
int nota;
BufferedReader f1 = nul; //descritor do ficheiro de entrada
BufferedWriter f2 = null; //descritor dos ficheiro de saída
Algoritmo:
Leitura do nome do ficheiro de entrada para nomeFx1
Leitura do nome do ficheiro de saída para nomeFx2
Abrir ficheiro de entrada com nome em nomeFx1
Abrir ficheiro de saída com nome em nomeFx2
Ler primeira linha do ficheiro de entrada para s
Enquanto houver linhas no ficheiro de entrada
1º. Mostrar no ecrã a linha de texto armazenada em s
2º. Ler a nota da disciplina de Java para a variável nota
3º. Escrever o conteúdo de s mais a nota de nota no ficheiro de saída
4º. Ler linha seguinte do ficheiro de entrada para s
Fechar ficheiro de entrada f1
Fechar ficheiro de saída f2
Programação em Java 2006-2007
6
Problema 2
Na terra do Alberto Alexandre (localmente conhecido por
Auexande Aubeto), o dialecto local é semelhante ao
português com duas excepções:
1. Não dizem os R’s
2. Trocam os L’s por U’s
Por exemplo, “lar doce lar” deve ser traduzido para “ua doce ua”.
Implementar um tradutor de ficheiros de texto em português para
o dialecto do Alberto. O tradutor deve pedir ao utilizador o
nome do ficheiro a traduzir e apresentar a tradução no ecrã.
Ficheiro de entrada
lar doce lar
Ficheiro de saída
ua doce ua
Programação em Java 2006-2007
7
Bibliografia


António José Mendes, Maria José Marcelino. Fundamentos de
programação em JAVA 2.FCA – Editora de informática, 2003.
Sun’s Tutorial: Basic I/0
http://java.sun.com/docs/books/tutorial/essential/io/index.html
Programação em Java 2006-2007
8
Download