• Nenhum resultado encontrado

Aula 12

N/A
N/A
Protected

Academic year: 2023

Share "Aula 12"

Copied!
8
0
0

Texto

(1)

Programação em Java 2006-2007

Aula 12

Ficheiros

(2)

Programação em Java 2006-2007 2

Operações de entrada/saída

teclado monitor

entrada saída

ficheiro

Programa Programa Programa Programa

leitura escrita

a n t e s

a g o r a

leitura escrita

ficheiro

(3)

Programação em Java 2006-2007 3

Leitura

import java.io.*;

class Ex_12_1_lerFicheiro extends P1App {

static void main(String [] args) throws IOException 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

BufferedReaderBufferedReader f = null;

try {try

// abrir o ficheiro de texto f = new BufferedReader(new FileReader

FileReader(nomeFx));

} catch(Exception e)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 f.close();

} }

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 detecta-

lo, visualizar uma mensagem e terminar. Para isto é preciso

adicionar as palavras chaves throws IOException à declaração

do procedimento main

Este ciclo permite ler um ficheiro linha a linha

Antes de terminar devemos fechar o ficheiro

(4)

Programação em Java 2006-2007 4

Escrita

import java.io.*;

class Ex_12_2_escreverFicheiro extends P1App {

static void main(String [] args) throws IOException 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);

} }

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

(5)

Programação em Java 2006-2007 5

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.

a9845 João Silva Martins a10200 Ana Maria Almeida a15800 José Pedro Alves

Ficheiro de entrada

a9845 João Silva Martins 16 a10200 Ana Maria Almeida 14 a15800 José Pedro Alves 17

...

Ficheiro de saída

(6)

Programação em Java 2006-2007 6

Problema 1.

Esquema do Algoritmo

Declaração de variáveis:

String nomeFx1nomeFx1, nomeFx2nomeFx2, ss;

int notanota;

BufferedReader f1 = nul; //descritor do ficheiro de entradaf1 BufferedWriter f2 f2 = null; //descritor dos ficheiro de saída Algoritmo:

Leitura do nome do ficheiro de entrada para nomeFx1nomeFx1

Leitura do nome do ficheiro de saída para nomeFx2nomeFx2 Abrir ficheiro de entrada com nome em nomeFx1nomeFx1 Abrir ficheiro de saída com nome em nomeFx2nomeFx2 Ler primeira linha do ficheiro de entrada para ss

Enquanto houver linhas no ficheiro de entrada

1º. Mostrar no ecrã a linha de texto armazenada em ss 2º. Ler a nota da disciplina de Java para a variável notanota

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 ss

Fechar ficheiro de entrada f1f1 Fechar ficheiro de saída f2f2

(7)

Programação em Java 2006-2007 7

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

lar doce lar

Ficheiro de entrada

ua doce ua

Ficheiro de saída

(8)

Programação em Java 2006-2007 8

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

Referências

Documentos relacionados

Aos 90 DAP verificou-se um peso seco das raízes e das folhas significativamente maior nas modalidades de fertilização com a concentração de azoto mineral total de 175 mg

variável abaixo do nível da consciência social, a variação da expressão do sujeito pronominal, em diferentes situações comunicativas de uma jovem universitária: assembleia

Observou-se que as primeiras semeaduras nem sempre foram favoráveis para a formação do maior número de vagens por planta, assim como para o desenvolvimento do grão, refle-

1 mostra que não houve diferença significativa (p &gt; 0,05) entre os três materiais pesquisados, no que se refere às medidas das distâncias entre material e parede

Quanto aos testes antimicrobianos, constata-se na tabela 3 que nem todas as soluções irrigadoras avaliadas apresentaram atividade antimicrobiana in vitro, contra todos

Uma questão relacionada àquela que formulamos no primeiro parágrafo surge desta constatação: assumindo a denotação usual dos nomes e verbos (ou predicados nominais e verbais),

sem pagar o condomínio, o mesmo acabou recebendo uma notificação de cobrança. Furioso, o mesmo enviou um email para a administradora do condomínio com os seguintes dizeres: “eu

concentração MIFC Secar a temperatura ambiente Mergular as laminas em solução aquosa de safranina a 1% a aquecer no forno de microondas em potencia alta por 30” Lavar com água