java i/o e classes essencias da linguagem java

Download JAVA I/O  e classes essencias da linguagem Java

Post on 06-Jun-2015

1.711 views

Category:

Documents

2 download

Embed Size (px)

DESCRIPTION

JAVA I/O e classes essencias da linguagem Java

TRANSCRIPT

Mdulo 9 Java I/O e Classes essenciais da linguagem Java

Objetivos Escrever um programa que utilize argumentos de linha de comando e propriedades do sistema; Escrever um programa que l da entrada padro; Escrever um programa que pode criar, ler e gravar arquivos;

Trabalhar com StringBuilder em vez de StringBuffer

Identificar deprecated classes classes obsoletas e como migrar.

Argumentos de Linha de Comando Qualquer aplicao em Java pode utilizar argumentos de linha de comando. Estes argumentos so Strings que so inseridas na linha de comando ao se invocar o interpretador Java, aps o nome da classe: java TestaArgs arg1 arg2 "outro argumento" Cada argumento de linha de comando inserido no array args que passado ao mtodo esttico main: public static void main(String[]args)

Argumentos de Linha de Comando1 public class TestaArgumentos { 2 public static void main(String[]args) { 3 for (int i = 0; i < args.length; i++ ) { 4 System.out.println("argumento[" + i + "] =" + args[i]); 5 } 6 } 7 } java TestaArgumentos arg1 arg2 "outro argumento"

args[0] = arg1 args[1] = arg2 args[2] = outro argumento

A saida deste programa :

Propriedades do Sistema Propriedades do Sistema uma caracterstica que substitui o conceito de variveis de ambiente (que dependente de plataforma). O mtodo System.getProperties retorna um objeto Properties que contm as propriedades do sistema. Use a opo -D para incluir uma nova propriedade java -DminhaPropriedade=25 TestaPropriedade

A Classe Properties A classe Properties implementa o mapeamento de nomes para valores (um mapeamento de String para String). O mtodo propertyNames retorna um objeto Enumeration contendo todos nomes de propriedades. O mtodo getProperty retorna uma String representando o valor da propriedade nomeada. Voc pode ler e escrever uma coleo de propriedades em um arquivo utilizando os mtodos load e store .

Propriedades do Sistema1 import java.util.Properties; 2 import java.util.Enumeration; 3 4 public class TestaPropriedades { 5 public static void main(String[] args) { 6 Properties propriedades = System.getProperties(); 7 Enumeration nomesPropriedades = propriedades.propertyNames(); 8 9 while (nomesPropriedades.hasMoreElements() ) { 10 String nome = (String) nomesPropriedades.nextElement(); 11 String propriedade = propriedades.getProperty(nome); 12 System.out.println("propriedade " + nome 13 + " " + propriedade + ""); 14 } 15 }

16 }

Propriedades do Sistema(Cont.)java -DminhaPropriedade=mengo TestaPropriedades

Eis um trecho da saida:propriedade propriedade propriedade propriedade propriedade propriedade Inc. propriedade propriedade propriedade java.vm.version 1.4.0 java.compiler NONE path.separator : file.separator / user.home is /home/Raskolnikov java.specification.vendor Sun Microsystems user.language en user.name Raskolnikov minhaPropriedade mengo.

Java I/O System.out permite escrever na sada padro. um objeto do tipo PrintStream.

System.in permite ler da entrada padro. um objeto do tipo InputStream.

System.err permite escrever para a sada de erro padro. um objeto do tipo PrintStream

Escrevendo na Sada Padro O mtodo println imprime o argumento e um caracter de nova linha (\n). O mtodo print imprime o argumento sem o caracter de nova linha. Exite sobrecarga dos mtodos print e println para a maioria dos tipos primitivos (boolean, char, int, long, float, e double) e para char[], Object, e String. Os mtodos print(Object) e println(Object)invocam o mtodo toString no argumento.

1 import java.io.*; 2 3 public class LeituraTeclado { 4 public static void main (String args[]) { 5 String s; 6 // Cria um objeto BufferReader para ler linha por linha do teclado 7 8 InputStreamReader ir = new InputStreamReader(System.in); 9 BufferedReader in = new BufferedReader(ir); 10 11 System.out.println("Unix: Digite ctrl-d ou ctrl-c para sair" + 12 "\nWindows: Digite ctrl-z para sair"); 13 try { 14 // L cada linha de entrada e a exibe na tela. 15 s = in.readLine(); // trava o console a espera de digitao 16 while (s != null) { 17 System.out.println("Linha lida: " + s); 18 s = in.readLine(); 19 } 20 21 // Fecha o objeto BufferReader para economia de recursos. 22 in.close(); 23 } catch (IOException e) { // trata excees de E/S. 24 e.printStackTrace(); 25 } } }

Lendo da Entrada Padro

Criao e Leitura/Escrita de Arquivos Pacote java.io Criando objetos File Manipulando objetos File Lendo e escrevendo em fluxos de arquivo file streams.

Criando um Objeto File... File meuArquivo; meuArquivo = new File("meuArquivo.txt");// ou meuArquivo = new File("MeusDocumentos","meuArquivo.txt");

Diretrios so tratados como arquivos em Java; a classe File suporta mtodos para recuperar um array de arquivos em um diretrio. File meuDir = new File("MeusDocumentos"); meuArquivo = new File(meuDir,"meuArquivo.txt")

File:Testes e Utilitrios Mtodos contendo informaes sobre arquivos:String getName() String getPath() String getAbsolutePath() String getParent() boolean renameTo(File novoNome)

Mtodos para testes em arquivos:boolean boolean boolean boolean boolean boolean exists() canWrite() canRead() isFile() isDirectory() isAbsolute();

File:Testes e Utilitrios Mtodos utilitrios de arquivos:long lastModified() long length() boolean delete()

Mtodos utilitrios de diretrios:boolean mkdir() String[]list()

Fluxo de Entrada e Sada Para Arquivos Leitura em Arquivos:

Utilize a classe FileReader para ler caracteres Utilize a classe BufferedReader para utilizar o mtodo readLine

Escrita em Arquivos:

Utilize a classe FileWriter para escrever caracteres em um arquivo. Utilize a classe PrintWriter para utilizar os mtodos print e println

1 import java.io.*; 2 public class LeituraDeArquivo { 3 public static void main (String[] args) { 4 // Cria um arquivo 5 File arquivo= new File(args[0]); // java LeituraDeArquivo // fernando_pessoa.txt 6 7 try { 8 // Cria o BufferReader para ler cada linha de um 9 // arquivo. 10 BufferedReader br = new BufferedReader(new FileReader (arquivo)); 11 String s; 12 13 14 15 16 17 18 19 20 21 22 23 // L cada linha do arquivo e exibe na tela. s = br.readLine(); while (s != null ) { System.out.println("Lido: " + s); s = br.readLine(); } // Fecha o BufferReader, que tb fecha o FileReader. br.close(); } catch (FileNotFoundException e1) { // se o arquivo no existir System.err.println("Arquivo no encontrado: " + arquivo);

Exemplo de Leitura de Arquivo

24 25 } catch (IOException e2) { 26 // Trata outras excees. 27 e2.printStackTrace(); 28 } 29 } 30 }

1 import java.io.*; 2 3 public class EscritaEmArquivo { 4 public static void main (String[] args) { 5 // Cria o arquivo 6 File file = new File(args[0]); 7 8 try { 9 // Cria o BufferReader para ler cada linha de da entrada // padro. 10 BufferedReader in 11 = new BufferedReader(new InputStreamReader(System.in)); 12 // Cria um objeto PrintWriter no arquivo. 13 PrintWriter out 14 = new PrintWriter(new FileWriter(file)); 15 String s; 16 17 System.out.print("Digite o texto do arquivo texto."); 18 System.out.println("[Digite ctrl-d(ou ctrl-z)para + + sair]"); 19 20 // Le linha a linha do teclado e exibe na tela. 21 while ((s = in.readLine()) != null) { 22 out.println(s); 23 } 24 25 // Fecha o BufferReader e o FileWriter. 26 in.close(); 27 out.close(); 28 29 } catch (IOException e) { 30 // Trata possveis excees de E/S. 31 e.printStackTrace(); 32 } 33 } 34 }

Exemplo de Gravao em Arquivo

A Classe MathA classe Math contm um grupo de mtodos estticos para funes matemticas: Truncamento: ceil, floor, e round Variaes sobre max, min, e abs(valor absoluto) Trigonometria: sin, cos, tan, asin, acos, atan, toDegrees, e toRadians Logaritmos: log e exp Outros: sqrt, pow, e random Constantes: PI e E

A Classe String Objetos String so sequncias de caracteres Unicode imutveis. Operaes que criam novas strings: Operaes de pesquisa:concat, replace, substring, toLowerCase, toUpperCase, e trim.

endsWith, startsWith, indexOf, e lastIndexOf.

Operaes de comparao: Outras operaes:charAt e length

equals, equalsIgnoreCase, e compareTo.

A Classe StringBuffer Objetos StringBuffer so sequncias de caracteres Unicode mutveis. Construtores: StringBuffer() Cria um buffer vazio. StringBuffer(int capacidade) Cria um buffer vazio com capacidade inicial especificada StringBuffer(String StringInicial) Cria um buffer que inicialmente contm a string especificada

Operaes de modificao:

append, insert, reverse, setCharAt, e setLength

A Classe StringBuilder

Introduzida no Java 5.0 Possui melhor desempenho do que StringBuffer o Deve ser utilizada apenas em operaes Thread-Safe. Se o cdigo que voc est trabalhando for Thread-Safe, compensa utilizar StringBuilder Reutiliza os mesmos mtodos de StringBuffer Lembre-se que tanto StringBuffer quanto StringBuilder so muito usados na concatenao de Strings dentro de um loop.

Exemplo: A Classes StringBuffer e StringBuilderpublic class TesteStringMutavel { public static void main (String [] args){ StringBuffer nome = new StringBuffer(); // Usando StringBuffer (Pr Java 5) nome.append("Rodrigo"); nome.append(" "); nome.append("Martins"); nome.append(" "); nome.append("Pagliares"); System.out.println(nome.toString()); StringBuilder nome2 = new StringBuilder(); // Usando StringBuffer (Recomendado) nome2.append("Rodrigo"); nome2.append(" "); nome2.append("Martins"); nome2.append(" "); nome2.append("Pagliares"); System.out.println(nome2.toString()); }}

Deprecation (Obsoleto) Deprecation torna obsoletas classes, atributos, mtodos, construtores, etc. Declaraes obsoletas so substitudas por mtodos com uma conveno de nomes melhor padronizada. Ao fazer migrao de cdigo, compile o cdigo com o flag -depreca