·

Ciência da Computação ·

Linguagens de Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

Tutorial Arquivos em JAVA Rober Marcone Rosi Motivação Em algumas situações é desejado ler dados de arquivos eescrever dados em arquivos o Não é necessário digitar via teclado os dados a cada execuçãodo programa o Os resultados do programa podem ser impressos ou enviadospara outras pessoas com mais facilidade o O estado do programa jogo por exemplo pode ser salvo erecarregado em outro momento Escrita de arquivos É muito parecido com escrita no monitor só que precisaconectar com o arquivo antes Vamos ver um exemplo Exemplo escrevendo 100 números aleatórios no monitor public class Monitor public static void mainString args for int i 0 i 100 i SystemoutprintlnMathroundMathrandom 100 Exemplo escrevendo 100 números aleatórios em um arquivo import javaioFileWriter import javaioPrintWriter public class Arquivo public static void mainString args PrintWriter arquivo null try FileWriter out new FileWriternumerostxt arquivo new PrintWriterout for int i 0 i 100 i arquivoprintlnMathroundMathrandom 100 catch Exception e Systemoutprintlne finally arquivoclose Exemplo escrevendo 100 números aleatórios em um arquivo import javaioFileWriter import javaioPrintWriter public class Arquivo O arquivo aparecerá na raiz do projeto do public static void mainString args NetBeans PrintWriter arquivo null try FileWriter out new FileWriternumerostxt arquivo new PrintWriterout for int i 0 i 100 i arquivoprintlnMathroundMathrandom 100 catch Exception e Systemoutprintlne finally arquivoclose Abertura do arquivo para escrita e posterior fechamento Exemplo escrevendo 100 números aleatórios em um arquivo import javaioFileWriter import javaioPrintWriter public class Arquivo public static void mainString args PrintWriter arquivo null try FileWriter out new FileWriternumerostxt arquivo new PrintWriterout for int i 0 i 100 i arquivoprintlnMathroundMathrandom 100 catch Exception e Systemoutprintlne finally arquivoclose Escrita no arquivo Exemplo escrevendo 100 números aleatórios em um arquivo import javaioFileWriter import javaioPrintWriter public class Arquivo public static void mainString args PrintWriter arquivo null try FileWriter out new FileWriternumerostxt arquivo new PrintWriterout for int i 0 i 100 i arquivoprintlnMathroundMathrandom 100 catch Exception e Systemoutprintlne finally arquivoclose tratamento de exceção no acesso ao arquivo Equivalente ao seguinte código import javaioPrintWriter public class Arquivo public static void mainString args try PrintWriter arquivo new PrintWriternumerostxt for int i 0 i 100 i arquivoprintlnMathroundMathrandom 100 catch Exception e Systemoutprintlne Leitura de arquivos Novamente é muito parecido com leitura do teclado sóque precisa conectar com o arquivo antes Vamos ver um exemplo Exemplo lendo 100 números do teclado e escrevendo a média import javautilScanner public class Teclado public static void mainString args Scanner teclado new ScannerSystemin int soma 0 for int i 0 i 100 i soma tecladonextInt SystemoutprintlnMédia soma 100f Exemplo lendo 100 números de um arquivo e escrevendo a média import javaioFileReader import javautilScanner public class Arquivo public static void mainString args Scanner arquivo null try FileReader in new FileReadernumerostxt arquivo new Scannerin int soma 0 for int i 0 i 100 i soma arquivonextInt SystemoutprintlnMédia soma 100f catch Exception e Systemoutprintlne finally arquivoclose Exemplo lendo 100 números de um arquivo e escrevendo a média import javaioFileReader import javautilScanner public class Arquivo O arquivo será procurado na raiz do projeto do public static void mainString args NetBeans Scanner arquivo null try FileReader in new FileReadernumerostxt arquivo new Scannerin int soma 0 for int i 0 i 100 i soma arquivonextInt SystemoutprintlnMédia soma 100f catch Exception e Systemoutprintlne finally arquivoclose Abertura do arquivo para leitura e posterior fechamento Exemplo lendo 100 números de um arquivo e escrevendo a média import javaioFileReader import javautilScanner public class Arquivo public static void mainString args Scanner arquivo null try FileReader in new FileReadernumerostxt arquivo new Scannerin int soma 0 for int i 0 i 100 i soma arquivonextInt SystemoutprintlnMédia soma 100f catch Exception e Systemoutprintlne finally arquivoclose Leitura do arquivo Exemplo lendo 100 números de um arquivo e escrevendo a média import javaioFileReader import javautilScanner public class Arquivo public static void mainString args Scanner arquivo null try FileReader in new FileReadernumerostxt arquivo new Scannerin int soma 0 for int i 0 i 100 i soma arquivonextInt SystemoutprintlnMédia soma 100f catch Exception e Systemoutprintlne finally arquivoclose tratamento de exceção no acesso ao arquivo Equivalente ao seguinte código import javaioFileReader import javautilScanner public class Arquivo public static void mainString args try Scanner arquivo new Scannernew FileReadernumerostxt int soma 0 for int i 0 i 100 i soma arquivonextInt SystemoutprintlnMédia soma 100f catch Exception e Systemoutprintlne E como tratar diferentes tipos Fácil é só fazer como faria no caso de escrita nomonitor e leitura do teclado Exemplo vamos fazer dois programas 1 Um que leia os dados de uma pessoa primeiro nome último nome e idade e escreva em um arquivo 2 Outro que liste os dados desse arquivo Importante respeitar a estrutura do arquivo o O arquivo deve ser lido sempre na mesma ordem em que foi gravado Exemplo Cadastro de pessoas import javaioFileWriter import javaioPrintWriter import javautilScanner public class Cadastro public static void mainString args Scanner teclado new ScannerSystemin try PrintWriter arquivo new PrintWriternew FileWriterpessoastxt true arquivoprintln SystemoutprintPrimeiro nome arquivoprinttecladonext SystemoutprintÚltimo nome arquivoprinttecladonext SystemoutprintIdade arquivoprinttecladonextInt catch Exception e Systemoutprintlne Concatena com os dados preexistentes no arquivo Exemplo Listagem das pessoas cadastradas import javaioFileReader import javautilScanner public class Listagem public static void mainString args try Scanner arquivo new Scannernew FileReaderpessoastxt while arquivohasNext String primeiroNome arquivonext String ultimoNome arquivonext int idade arquivonextInt SystemoutprintlnprimeiroNome ultimoNome tem idade anos de idade catch Exception e Systemoutprintlne Exercício 1 Faça um programa que leia um número N e gere um arquivo com N nomes e idades aleatórios o Faça uso de dois arquivos criados na mão um que contenha 20 nomes e outro que contenha 20 sobrenomes o Gere aleatoriamente de 0 a 2 iniciais de nome do meio e a idade o Cada linha deve conter um nome completo e a sua idade Exercício 2 Faça um programa que leia o arquivo de nomes e idades aleatórios do exercício anterior e gere um arquivo de índice ordenado por nome o Cada linha do arquivo de índice deve conter o número da linhaequivalente do arquivo aleatório 3 Faça um programa que leia o arquivo de nomes e idades aleatórios do exercício anterior e gere um arquivo de índice ordenado por idade o Cada linha do arquivo de índice deve conter o número da linha equivalente do arquivo aleatório Exercício 4 Estenda o exemplo do cadastro para considerar também a altura da pessoa o Armazene a altura como float usando como separador dedecimais e somente 2 casas decimais ex 188 o Para alterar a forma com que o float é escrito no arquivo use o método PrintWriterformat no lugar de PrintWriterprint o Leia o capítulo sobre formatação de saída no tutorial httpdocsoraclecomjavasetutorialessentialioformattinghtm l o Dica para escrever a altura no arquivo use arquivoformatLocaleforLanguageTagptBR 2f altura no lugar de arquivoprintaltura Referências Slides de Vanessa Braganholo UFF