SlideShare uma empresa Scribd logo
Entrada/Saída
O que é um Canal
   Em JAVA, todas os aspectos que se relacionam com as diferentes formas de se
    realizar a leitura e a escrita de dados a partir de uma fonte e para um destino,
    são reunidas, e abstraídas, no conceito de canal.
   Um Canal é uma abstracção que pode representar quer uma fonte genérica de
    entrada de dados ou um destino genérico para escrita de dados de acesso
    sequencial e independente de dispositivos físicos concretos, formatos ou até de
    mecanismos de optimização de leitura e escrita.


   Em JAVA, existem duas grandes classes de canais, designadamente:
     Canais de caracteres (canais de texto)
     Canais de bytes (canais binárias)




                                                               2
Classes Base
   Todos as classes , que implementam formas particulares de Leitura e Escrita
    em canais, são derivadas de quatro classes abstractas, são elas:

   Para os canais de bytes: InputStream e OutputStream
   Para os canais de caracteres: Reader e Writer (associados aos ficheiros)


   Estas classes sendo abstractas definem o conjunto de métodos que uma
    qualquer implementação de tais canais deverá concretizar.


   JAVA oferece serviços básicos de Entrada e Saída através de dois canais
    associados respectivamente às operações de bytes associada a leitura do
    teclado ou a e escrita no monitor:
       System.in: Leitura no teclado
       System.out: Escrita no monitor

                                                              3
Canal de leitura: System.in
   System.in: É o canal de leitura standard
       Por omissão lê o teclado

   Podemos usar System.in de várias maneiras
       Directamente (acesso básico)
       Em conjunto com outros canais (acesso combinado)




                                                4
Wrappers & Buffers
                     O package java.io está inteligentemente desenhado.
 InputStreamReader   Algumas das classes funcionam como classes embrulho
                     (wrapper classes) e destinam-se a acrescentar
     System.in       funcionalidade aos canais existentes.


                     Por Exemplo:


                     •InputStreamReader: Permite ler um caracter do teclado
                     sem ser necessário converte-lo manualmente.
 InputStreamReader
                     (read())
    System.in        •BufferedReader: Permite ler uma cadeia de caracteres
                     do teclado sem ser necessário converte-lo manualmente
  BufferedReader     (readLine()).



                                                    5
Ler do teclado (Java 1.4)

try {
  BufferedReader r = new BufferedReader(
                   new InputStreamReader(System.in));

 String s = r.readLine() ;
 int i = (new Integer(s)).intValue() ;

 System.out.println(i) ;
}
catch (IOException e) { }




                                            6
Canais de Bytes
                             ByteArrayInputStream
                                                        DataInputStream                   DataInput
                             FileInputStream
                                                         BufferedInputStream
                              FilterInputStream
                                                         LineNumberInputStream
          InputStream        SequenceInputStream
                                                         PushBackInputStream
                              PipedInputStream

                             ObjectInputStream                     ObjectInput

Object                        StringBufferInputStream


                              ByteArrayOutputStream

                              FileOutputStream           BufferedOutputStream

         OutputStream         FilterOutputStream        DataOutputStream         DataOutput

                              PipedOutputStream          PrintStream

                             ObjectOutputStream              ObjectOutput



          RandomAccessFile




                                                                          7
Canais de Caracteres
                            CharArrayReader

                           InputStreamReader    FileReader

                            FilterReader        PushBackReader

           Reader           StringReader

                            PipedReader

                           BufferedReader       LineNumberReader

Object                      BufferedWriter

                           CharArrayWriter

                           OutputStreamWriter    FileWriter

           Writer           FilterWriter

                            PipedWriter

                            PrintWriter

                            StringWriter


         StreamTokenizer




                                                              8
Classe Scanner (JAVA 5.0)

   A classe Scanner, introduzida com a versão J2SE 5.0, é uma
    classe nova que permite converter o texto para tipos primitivos.
   java.util.Scanner

   O texto pode ser obtido das mais diversas fontes tais como
    objectos do tipo:
     Strings

     InputStream

     Ficheiros



   A classe Scanner permite separar o texto em tokens, que são
    sequências de caracteres separados por delimitadores.

   Por defeito, os delimitadores são os espaços em branco, tabs e
    mudanças de linha.

                                                     9
Leitura do Teclado
   Para ler de forma confortável texto do canal de entrada padrão, é preciso
    criar primeiro um Scanner sobre canal System.in que esta associado ao
    teclado
        Scanner sc = new Scanner(System.in);

   Para cada um dos tipos primitivos há um método correspondente com a
    assinatura nextXxx() que retorne um valor desse tipo.

   Se a string não puder ser interpretada como sendo deste tipo, é lançado
    uma excepção do tipo InputMismatchException.

   Exemplos de algumas leituras de tokens:
     String aToken = sc.next() ; //Lê um token

     int num1 = sc.nextInt() ; //Lê um token inteiro
     double num2 = sc.nextDouble() ; //Lê um token              real
     String linha = sc.nextLine() ; //Lê uma linha




                                                            10
Exemplo: Ler do teclado (Java 5.0)
import java.io.*;
import java.util.*;

class ExScanner{
public static void main(String[] args) {
{
  Scanner scanTeclado = new Scanner(System.in);

    System.out.println ("Introduza um inteiro");

 try
  {
  int num = scanTeclado.nextInt();
  System.out.println ("Numero introduzido:" + num);
  }

 catch (InputMismatchException e)
  {
    System.out.println ("Erro na leitura do valor:" + e );
  }
  }
}


                                                             11
Exemplo: Ler do teclado (Java 5.0)
import java.io.*;
import java.util.*;

class ExScanner{
public static void main(String[] args) {
{
  String str = "Vamos experimentar o scanner";

    Scanner scanStr = new Scanner(str);

    while (scanStr.hasNext())
    {
    System.out.println ("Token:" + scanStr.next());
      }
    }
 }
}




                                                      12
Exemplo: Ler do teclado (Java 5.0)
                                    Ler int (e.g. 3501):   Introduziu 123
import java.io.*;
import java.util.*;
                                    Ler float (e.g.   2,43):    Introduziu 2.34
public class ScanConsoleApp{
  public static void main (String arg[]) {
         // Cria um scanner para ler do teclado
         Scanner scanner = new Scanner (System.in);
         try {
          System.out.printf (“Ler int (e.g. %4d): ",3501);
          int int_val = scanner.nextInt ();
          System.out.println (" Introduziu " + int_val +"n");

           System.out.printf (“Ler float (e.g. %5.2f): ", 2.43);
           float float_val = scanner.nextFloat ();
           System.out.println (" Introduziu " + float_val +"n");
         }
         catch (InputMismatchException e) {
           System.out.println (“Erro na leitura do valor:" + e );
         }
     }
}

                                                           13
Ficheiros
       Um ficheiro é uma entidade de armazenamento de informação permanente.

       A manipulação de ficheiros é feita pela utilização de canais que derivam das
        classes: InputStream; Reader; OutputStream; Writer.

       Os ficheiros, de acordo com o tipo de informação que podem armazenar,
        podem ser classificada em:

Ficheiros de Texto (Orientado ao caracter)
        Derivam das classes : Reader e Writer.
        Fácil de ser lido por humanos com ferramentas simples (type, more, edit, ...).
        Linhas com comprimento variável.
        Cada linha termina com uma marca.
        Exemplo: ficheiro com código-fonte em Java.

Ficheiro de Dados (Orientado ao byte)
        Derivam das classes : InputStream e OutputStream.
        Apropriado para o processamento por ferramentas automáticas.
        Armazenamento de tipos primitivos, serialização de objectos, etc.
        Armazenamento independente da plataforma.


                                                                                    14
A Classe File

       A classe File representa os ficheiros e directorias de um sistemas de
        ficheiros.
       Esta classe define métodos para a realização das operações sobre ficheiros
        e directorias:
           listagem de directorias

           apagar um ficheiro

           determinar atributos de um ficheiro, alterar o seu nome, etc.

   Definição:

           File entFich = new File(cadeia de caracteres);



                                                                        15
Os métodos da Classe File
CONSTRUTORES
   File(String caminho)                   construtor de directórios/ficheiros
   File(String caminho,String nome)       construtor com nome separado do caminho
   File(String directorio, String nome)   construtor com directório e nome do ficheiro


MÉTODOS
   boolean canRead()                      ficheiro/directório pode ser lido
   boolean canWrite()                     pode-se gravar no ficheiro/directório
   boolean delete()                       apaga ficheiro/directório
   boolean exists()                       verifica se ficheiro/directório existem
   boolean isAbsolute()                   verifica se caminho é absoluto
   boolean isDirectory()                  verifica se objecto é directório
   boolean isFile()                       verifica se objecto é ficheiro
   boolean mKdir()                        cria directório do objecto
   boolean mKdirs()                       cria directórios do caminho
   boolean renameTo(String novo)          muda nome do ficheiro/directório para novo

                                                                       16
Exemplo: Classe File
import java.io.*;
class Exemplo
{
  public static void main(String[] args) throws IOException
  {
    File meuFicheiro = new File(”dados.dat”);

        if (meuFicheiro.exists())

          System.out.println(“dados.dat existe");

        else

          System.out.println(" dados.dat     não existe");

    }
}
                             Testa a existência do ficheiro “dados.dat”


                                                      17
Escrita
             Ficheiro de Texto
   Passos necessários para criar um ficheiro de Texto

   Criar um objecto do tipo File. Permite manipular diversos atributos de
    um ficheiro.

   Criar um canal FileWriter ligado ao objecto File. Permite associar um
    ficheiro de texto a um canal de escrita.

   Criar um canal tampão BufferedWriter ligado ao objecto FileWriter.
    Maior eficiência na escrita de um ficheiro.

   Criar um canal PrintWriter ligado ao objecto BufferedWriter.
    Permite a utilização dos métodos print e println.




                                                        18
Escrita com PrintWriter
import java.io.*;
public class PrintWriterFileApp{
  public static void main (String arg[]) {

        File file = null;
        file = new File ("textOutput.txt");
        try {
          FileWriter file_writer = new FileWriter (file);
          BufferedWriter buf_writer = new BufferedWriter (file_writer);
          PrintWriter print_writer = new PrintWriter (buf_writer);

          print_writer.println ("Saida com PrintWriter.");
          print_writer.println ("tipos primitivos convertidos em strings:");

          boolean a_boolean = false;
          int an_int = 1234567;

          print_writer.println (a_boolean);
          print_writer.println (an_int);
          }
        catch (IOException ioe){ System.out.println("IO Exception"); }
    }
}


                                                          19
Escrita num ficheiro de Texto (formatado)
import java.io.*;
public class PrintWriterFileApp{
  public static void main (String arg[]) {

       File file = null;
       file = new File ("textOutput.txt");
       Formatter formatter;
       try {
         formatter = new Formatter (file);

         formatter.format ("Saida com PrintWriter. %n");
         formatter.format ("tipos primitivos convertidos em strings: %n");

         boolean a_boolean = false;
         int an_int = 1234567;
        double a_double = -4.297e-15;

        formatter.format ("boolean = %9b %n", a_boolean);
        formatter.format ("int     = %9d %n", an_int);
         formatter.format ("double = %9.2e %n", a_double);
         formatter.flush ();
         formatter.close ();
       }
       catch (IOException ioe){ System.out.println("IO Exception"); }
  }}
                                                         20
Escrita num ficheiro de Texto (formatado)
 formatter.format ("Saida com PrintWriter. %n");
    %n –> mudança de linha




  Ficheiro textOutput.txt :

  Saida com PrintWriter.
  Tipos primitivos convertidos em strings:
  boolean =     false
  int     =   1234567
  double = -4.30e-15




                                                   21
Leitura
                       Ficheiro de Texto
   Leitura com Scanner


   Leitura com File Reader

       Criar um objecto do tipo File
        Permite manipular diversos atributos de um ficheiro.

       Criar um canal FileReader ligado ao objecto do tipo File
        Permite a leitura de um ficheiro escrito em formato ASCII.

       Criar um canal tampão BufferedReader ligado objecto do tipo FileReader
        Maior eficiência na leitura de um ficheiro .




                                                                     22
Leitura com Scanner
import java.io.*;                                    Ficheiro textInput.txt:
import java.util.*;                                  123 Primeiro
public class LeituraFicheiro {                       234 Segundo
  public static void main (String arg[]) {
                                                      Saida:
    File file = new File ("textInput.txt");
                                                      Numero inteiro lido: 123
    Scanner scanner = null;
                                                      Primeiro
    try {
                                                      Numero inteiro lido: 234
       scanner = new Scanner (file);
                                                      Segundo
       while( scanner.hasNext())
                                                      Finished executing
       {
          int num = scanner.nextInt();
          System.out.println ("Numero inteiro lido: " +num);
          System.out.println (scanner.next());
          }
    }
    catch (InputMismatchException e) {
      System.out.println ("Mismatch exception:" + e );
    }
    catch (FileNotFoundException e) {
      System.out.println ("Ficheiro não encontrado!");
      System.exit (0);
    } }}

                                                         23
Leitura com FileReader (Ex.1)
                                    Le um ficheiro de texto.
import java.io.*;                   Envia para o ecrã cada linha lida.
import java.util.*;

class LeFicheiro
{
  public static void main(String[] args) throws IOException
  {
    String linha;
    File f;
    FileReader fich;
    BufferedReader entrada = null;




                                                               24
Leitura com FileReader (Ex.1)

try
{
  f        = new File("meuFich.dat");
  fich     = new FileReader(f);
  entrada = new BufferedReader(fich);
  do
  {
     linha = entrada.readLine();
     if (linha != null )
        System.out.println(linha);
   }
   while (linha != null);
}




                                        25
Leitura com FileReader (Ex1)

        catch ( IOException e)
        {
             System.out.println("Erro de I/O.");
             System.out.print(e);
        }
        finally
        {
          System.out.println("fim do programa.");
          if (entrada != null)
             entrada.close();
        }

    }
}




                                                    26
Exemplo 2
import java.io.*;
class ContaDigitoCaracter{
  public static void main(String[] args) throws IOException {
  int proxValor, numMaius=0, numMinu=0, numDigitos=0, numOutros=0;
  char proxCar;                              Lê um ficheiro e retorna os números de:
  String nomeFicheiro;                       digitos; letras maisculas; letras
                                             minusculas e outros caracteres
// Obtem ficheiro do utilizar
    System.out.print(“Nome do ficheiro: ");
    nomeFicheiro = Le.umaString();
    File fich= new File(nomeFicheiro);

    // testa leitura
    if (fich.exists() && fich.canRead())
    {
      // Cria os canais
      BufferedReader fichEnt
        = new BufferedReader(new FileReader(fich));




                                                           27
Exemplo2
// Le do ficheiro
    proxValor = fichEnt.read();
    while (proxValor != -1){
      proxCar = (char) proxValor;
      if (Character.isDigit(proxCar)){
        numDigitos++;
      }
      else if (Character.isUpperCase(proxCar)){
        numMaius++;
      }
      else if (Character.isLowerCase(proxCar)){
        numMinu++;
      }
      else {
        numOutros++;
      }
      proxValor = fichEnt.read();
    }



                                                  28
Exemplo2
                                              Nome do Ficheiro: ContaCar.java
                                      
                                              Numero de digitos: 7
     //fecha canal                            Numero de letras maisculas: 96
     fichEnt.close();                         Numero de letras minusculas: 1001
     //Mostra resultados                      Numero de outros caracteres: 832
     System.out.print(“Numero de digitos: “);
     System.out.println( numDigitos);
     System.out.print(“Numero de letras maisculas: “);
     System.out.println( numMaius);
     System.out.print(“Numero de letras minusculas: “);
     System.out.println( numMinu);
     System.out.print(“Numero de outros caracteres: “);
     System.out.println( numOutros);
    }
    else {
             System.out.print(“não é possível ler ficheiro: “);
             System.out.println(nomeEntrada);
  }
 }
}

                                                         29
Exemplo3 - Ficheiro Texto
Leitura de um Ficheiro e separação de
Ficheiro: accoes.dat dados
ACME 6/1/96 50 46.5 49.75
SP500 6/2/96 124 122 123.5
DWMI 6/1/96 24.5 22.25 24.5



                    Pretende-se manipular um ficheiro (accoes.dat), no
                    qual cada linha contem o registo de uma sessão da
                    bolsa sobre um grupo de acções:
                    Nome da acção, data do registo, valor mais alto
                    obtido, valor mais baixo obtido, valor de fecho.



                                                              30
Exemplo3 - Ficheiro Texto
Leitura de um Ficheiro e separação de
               dados
import java.io.*;
import java.util.*;

public class stock_data {

  public static void main(String args[])
    {
       String nome_accao;
       Date data_registo;
       float valor_alto, valor_baixo, valor_fecho;

        try {
           String linha_str;
           int linha_numero;

            File fich= new File("accoes.dat");

            // Cria os canais
            BufferedReader fichEnt
            = new BufferedReader(new FileReader(fich));

                                                     31
Exemplo3 - Ficheiro Texto
    Leitura de um Ficheiro e separação de
                dados(cont.)

while ((linha_str = fichEnt.readLine()) != null)
{
  StringTokenizer st = new StringTokenizer(linha_str);
  // extrai tokens e os converte para os tipos apropriados

nome_accao     =   st.nextToken();
data_registo   =   new Date(st.nextToken());
valor_alto     =   Float.valueOf(st.nextToken()).floatValue();
valor_baixo    =   Float.valueOf(st.nextToken()).floatValue();
valor_fecho    =   Float.valueOf(st.nextToken()).floatValue();




                                                     32
Exemplo3 - Ficheiro Texto
Leitura de um Ficheiro e separação de
            dados (cont.)
         // mostra resultado
          System.out.println("nome da Accao :" + nome_accao);
          System.out.println("Data Registo :" + data_registo);
          System.out.println("valores: Alto:" + valor_alto +
          " Baixo:" + valor_baixo + " Fecho:" + valor_fecho);
          System.out.println();
        }
        fichEnt.close();
     }
     catch (IOException e)
     {
       System.out.println("Erro I/O: " + e);
     }
    }
}




                                                    33

Mais conteúdo relacionado

Mais procurados

Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
Adriano Teixeira de Souza
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
Léo Dias
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
Bruno Grange
 
Estrutura de Dados - Ponteiros
Estrutura de Dados - PonteirosEstrutura de Dados - Ponteiros
Estrutura de Dados - Ponteiros
Adriano Teixeira de Souza
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Loiane Groner
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e Funções
Adriano Teixeira de Souza
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
fabiocerqueira
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
 
Serviços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSHServiços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSH
Natanael Simões
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
Mario Sergio
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
Adriano Teixeira de Souza
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
Ludimila Monjardim Casagrande
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
Regis Magalhães
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
Adriano Teixeira de Souza
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
Regis Magalhães
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
Alvaro Oliveira
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
Igor Takenami
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
Emília Alves Nogueira
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
Arthur Emanuel
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
Bruno Catão
 

Mais procurados (20)

Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01   Curso de HTML5 - Aula 01
Curso de HTML5 - Aula 01
 
Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Estrutura de Dados - Ponteiros
Estrutura de Dados - PonteirosEstrutura de Dados - Ponteiros
Estrutura de Dados - Ponteiros
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Estrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e FunçõesEstrutura de Dados - Procedimentos e Funções
Estrutura de Dados - Procedimentos e Funções
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
Serviços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSHServiços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSH
 
Curso de Java (Parte 2)
 Curso de Java (Parte 2) Curso de Java (Parte 2)
Curso de Java (Parte 2)
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Linguagem C 07 Registros
Linguagem C 07 RegistrosLinguagem C 07 Registros
Linguagem C 07 Registros
 
Introdução a estruturas de dados em python
Introdução a estruturas de dados em pythonIntrodução a estruturas de dados em python
Introdução a estruturas de dados em python
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 

Semelhante a Ficheiros em JAVA

Introdução a Java IO
Introdução a Java IOIntrodução a Java IO
Introdução a Java IO
rdgse
 
Java 15
Java 15Java 15
Entrada e Saída
Entrada e SaídaEntrada e Saída
Entrada e Saída
Denis L Presciliano
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
Rodrigo Vieira
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
Rodrigo Vieira
 
Java Básico :: Stream
Java Básico :: StreamJava Básico :: Stream
Java Básico :: Stream
Wesley R. Bezerra
 
Apresentação java io
Apresentação java ioApresentação java io
Apresentação java io
Silvino Neto
 
java.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosjava.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivos
Marcello Thiry
 
Aula Persistência 01 (Java)
Aula Persistência 01 (Java)Aula Persistência 01 (Java)
Aula Persistência 01 (Java)
Fabio Moura Pereira
 
Java recursos avançados - streams
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streams
Armando Daniel
 
F I C+ + L P 05
F I C+ + L P 05F I C+ + L P 05
F I C+ + L P 05
t34m0nana
 
Java9
Java9Java9
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
Fabio Spanhol
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
Edson Celio
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
wildcat9335
 
Java básico - módulo 03: captura de dados
Java  básico - módulo 03: captura de dadosJava  básico - módulo 03: captura de dados
Java básico - módulo 03: captura de dados
Professor Samuel Ribeiro
 
ptt
pttptt
C 1
C 1C 1
10 io
10 io10 io
Ud2
Ud2Ud2

Semelhante a Ficheiros em JAVA (20)

Introdução a Java IO
Introdução a Java IOIntrodução a Java IO
Introdução a Java IO
 
Java 15
Java 15Java 15
Java 15
 
Entrada e Saída
Entrada e SaídaEntrada e Saída
Entrada e Saída
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/http://www.dm.ufscar.br/~waldeck/curso/java/
http://www.dm.ufscar.br/~waldeck/curso/java/
 
Java Básico :: Stream
Java Básico :: StreamJava Básico :: Stream
Java Básico :: Stream
 
Apresentação java io
Apresentação java ioApresentação java io
Apresentação java io
 
java.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosjava.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivos
 
Aula Persistência 01 (Java)
Aula Persistência 01 (Java)Aula Persistência 01 (Java)
Aula Persistência 01 (Java)
 
Java recursos avançados - streams
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streams
 
F I C+ + L P 05
F I C+ + L P 05F I C+ + L P 05
F I C+ + L P 05
 
Java9
Java9Java9
Java9
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Python e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentestPython e Linux para a criação de ferramentas para pentest
Python e Linux para a criação de ferramentas para pentest
 
Python2.5.ppt
Python2.5.pptPython2.5.ppt
Python2.5.ppt
 
Java básico - módulo 03: captura de dados
Java  básico - módulo 03: captura de dadosJava  básico - módulo 03: captura de dados
Java básico - módulo 03: captura de dados
 
ptt
pttptt
ptt
 
C 1
C 1C 1
C 1
 
10 io
10 io10 io
10 io
 
Ud2
Ud2Ud2
Ud2
 

Mais de Pedro De Almeida

APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
Pedro De Almeida
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faq
Pedro De Almeida
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
Pedro De Almeida
 
IP Multicast Routing
IP Multicast RoutingIP Multicast Routing
IP Multicast Routing
Pedro De Almeida
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
Pedro De Almeida
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
Pedro De Almeida
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card number
Pedro De Almeida
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
Pedro De Almeida
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
Pedro De Almeida
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos Cíclicos
Pedro De Almeida
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Pedro De Almeida
 
Sessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-ZivSessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-Ziv
Pedro De Almeida
 
Sessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritméticaSessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritmética
Pedro De Almeida
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
Pedro De Almeida
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
Pedro De Almeida
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
Pedro De Almeida
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocos
Pedro De Almeida
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e Entropias
Pedro De Almeida
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de Segurança
Pedro De Almeida
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
Pedro De Almeida
 

Mais de Pedro De Almeida (20)

APM Model in .NET - PT-pt
APM Model in .NET - PT-ptAPM Model in .NET - PT-pt
APM Model in .NET - PT-pt
 
Java memory model primary ref. - faq
Java memory model   primary ref. - faqJava memory model   primary ref. - faq
Java memory model primary ref. - faq
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
IP Multicast Routing
IP Multicast RoutingIP Multicast Routing
IP Multicast Routing
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview Draft
 
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
O Projecto, Gestão de Projectos e o Gestor de Projectos - Parte 1
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card number
 
Classes e Objectos JAVA
Classes e Objectos JAVAClasses e Objectos JAVA
Classes e Objectos JAVA
 
Excepções JAVA
Excepções JAVAExcepções JAVA
Excepções JAVA
 
Sessão 10 Códigos Cíclicos
Sessão 10 Códigos CíclicosSessão 10 Códigos Cíclicos
Sessão 10 Códigos Cíclicos
 
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canalSessao 9 Capacidade de canal e Introdução a Codificação de canal
Sessao 9 Capacidade de canal e Introdução a Codificação de canal
 
Sessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-ZivSessão 8 Codificação Lempel-Ziv
Sessão 8 Codificação Lempel-Ziv
 
Sessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritméticaSessao 7 Fontes com memória e codificação aritmética
Sessao 7 Fontes com memória e codificação aritmética
 
Sessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonteSessao 5 Redundância e introdução à codificação de fonte
Sessao 5 Redundância e introdução à codificação de fonte
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticos
 
Sessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidadeSessao 4 - Chaves espúrias e distância de unicidade
Sessao 4 - Chaves espúrias e distância de unicidade
 
Sessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocosSessao 3 Informação mútua e equívocos
Sessao 3 Informação mútua e equívocos
 
Sessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e EntropiasSessao 2 Introdução à T.I e Entropias
Sessao 2 Introdução à T.I e Entropias
 
Cripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de SegurançaCripto - Introdução, probabilidades e Conceito de Segurança
Cripto - Introdução, probabilidades e Conceito de Segurança
 
Basic java tutorial
Basic java tutorialBasic java tutorial
Basic java tutorial
 

Último

Vivendo a Arquitetura Salesforce - 02.pptx
Vivendo a Arquitetura Salesforce - 02.pptxVivendo a Arquitetura Salesforce - 02.pptx
Vivendo a Arquitetura Salesforce - 02.pptx
Mauricio Alexandre Silva
 
UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...
UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...
UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...
Manuais Formação
 
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasnTabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
CarlosJean21
 
Aula04A-Potencia em CA eletricidade USP.pdf
Aula04A-Potencia em CA eletricidade USP.pdfAula04A-Potencia em CA eletricidade USP.pdf
Aula04A-Potencia em CA eletricidade USP.pdf
vitorreissouzasilva
 
Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...
Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...
Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...
fran0410
 
Eurodeputados Portugueses 2024-2029 | Parlamento Europeu
Eurodeputados Portugueses 2024-2029 | Parlamento EuropeuEurodeputados Portugueses 2024-2029 | Parlamento Europeu
Eurodeputados Portugueses 2024-2029 | Parlamento Europeu
Centro Jacques Delors
 
ATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junhoATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junho
Crisnaiara
 
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdfUFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
Manuais Formação
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
Zenir Carmen Bez Trombeta
 
Infografia | Resultados das Eleições Europeias 2024-2029
Infografia | Resultados das Eleições Europeias 2024-2029Infografia | Resultados das Eleições Europeias 2024-2029
Infografia | Resultados das Eleições Europeias 2024-2029
Centro Jacques Delors
 
Caça-palavaras e cruzadinha - Dígrafos.
Caça-palavaras  e cruzadinha  - Dígrafos.Caça-palavaras  e cruzadinha  - Dígrafos.
Caça-palavaras e cruzadinha - Dígrafos.
Mary Alvarenga
 
Razonamiento Matematico 6to Primaria MA6 Ccesa007.pdf
Razonamiento Matematico 6to Primaria MA6 Ccesa007.pdfRazonamiento Matematico 6to Primaria MA6 Ccesa007.pdf
Razonamiento Matematico 6to Primaria MA6 Ccesa007.pdf
Demetrio Ccesa Rayme
 
CD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdf
CD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdfCD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdf
CD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdf
Manuais Formação
 
Roteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptxRoteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptx
pamellaaraujo10
 
O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4
DouglasMoraes54
 
O século XVII e o nascimento da pedagogia.pptx
O século XVII e o nascimento da pedagogia.pptxO século XVII e o nascimento da pedagogia.pptx
O século XVII e o nascimento da pedagogia.pptx
geiseortiz1
 
Aula 02 - Introducao a Algoritmos.pptx.pdf
Aula 02 - Introducao a Algoritmos.pptx.pdfAula 02 - Introducao a Algoritmos.pptx.pdf
Aula 02 - Introducao a Algoritmos.pptx.pdf
AntonioAngeloNeves
 
Aula de filosofia sobre Sexo, Gênero e sexualidade
Aula de filosofia sobre Sexo, Gênero e sexualidadeAula de filosofia sobre Sexo, Gênero e sexualidade
Aula de filosofia sobre Sexo, Gênero e sexualidade
AlessandraRibas7
 
3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf
3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf
3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf
AdrianoMontagna1
 
Slides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptx
Slides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptxSlides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptx
Slides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptx
LuizHenriquedeAlmeid6
 

Último (20)

Vivendo a Arquitetura Salesforce - 02.pptx
Vivendo a Arquitetura Salesforce - 02.pptxVivendo a Arquitetura Salesforce - 02.pptx
Vivendo a Arquitetura Salesforce - 02.pptx
 
UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...
UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...
UFCD_7211_Os sistemas do corpo humano_ imunitário, circulatório, respiratório...
 
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasnTabela Funções Orgânicas.pdfnsknsknksnksn nkasn
Tabela Funções Orgânicas.pdfnsknsknksnksn nkasn
 
Aula04A-Potencia em CA eletricidade USP.pdf
Aula04A-Potencia em CA eletricidade USP.pdfAula04A-Potencia em CA eletricidade USP.pdf
Aula04A-Potencia em CA eletricidade USP.pdf
 
Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...
Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...
Telepsiquismo Utilize seu poder extrassensorial para atrair prosperidade (Jos...
 
Eurodeputados Portugueses 2024-2029 | Parlamento Europeu
Eurodeputados Portugueses 2024-2029 | Parlamento EuropeuEurodeputados Portugueses 2024-2029 | Parlamento Europeu
Eurodeputados Portugueses 2024-2029 | Parlamento Europeu
 
ATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junhoATIVIDADES de alfabetização do mês de junho
ATIVIDADES de alfabetização do mês de junho
 
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdfUFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
UFCD_4667_Preparação e confeção de molhos e fundos de cozinha_índice.pdf
 
Cartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptxCartinhas de solidariedade e esperança.pptx
Cartinhas de solidariedade e esperança.pptx
 
Infografia | Resultados das Eleições Europeias 2024-2029
Infografia | Resultados das Eleições Europeias 2024-2029Infografia | Resultados das Eleições Europeias 2024-2029
Infografia | Resultados das Eleições Europeias 2024-2029
 
Caça-palavaras e cruzadinha - Dígrafos.
Caça-palavaras  e cruzadinha  - Dígrafos.Caça-palavaras  e cruzadinha  - Dígrafos.
Caça-palavaras e cruzadinha - Dígrafos.
 
Razonamiento Matematico 6to Primaria MA6 Ccesa007.pdf
Razonamiento Matematico 6to Primaria MA6 Ccesa007.pdfRazonamiento Matematico 6to Primaria MA6 Ccesa007.pdf
Razonamiento Matematico 6to Primaria MA6 Ccesa007.pdf
 
CD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdf
CD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdfCD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdf
CD_B2_C_Criar e Editar Conteúdos Digitais_índice.pdf
 
Roteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptxRoteiro para análise do Livro Didático.pptx
Roteiro para análise do Livro Didático.pptx
 
O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4O Profeta Jeremias - A Biografia de Jeremias.pptx4
O Profeta Jeremias - A Biografia de Jeremias.pptx4
 
O século XVII e o nascimento da pedagogia.pptx
O século XVII e o nascimento da pedagogia.pptxO século XVII e o nascimento da pedagogia.pptx
O século XVII e o nascimento da pedagogia.pptx
 
Aula 02 - Introducao a Algoritmos.pptx.pdf
Aula 02 - Introducao a Algoritmos.pptx.pdfAula 02 - Introducao a Algoritmos.pptx.pdf
Aula 02 - Introducao a Algoritmos.pptx.pdf
 
Aula de filosofia sobre Sexo, Gênero e sexualidade
Aula de filosofia sobre Sexo, Gênero e sexualidadeAula de filosofia sobre Sexo, Gênero e sexualidade
Aula de filosofia sobre Sexo, Gênero e sexualidade
 
3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf
3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf
3ª série HIS - PROVA PAULISTA DIA 1 - 1º BIM-24.pdf
 
Slides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptx
Slides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptxSlides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptx
Slides Lição 12, Betel, Ordenança para amar o próximo, 2Tr24.pptx
 

Ficheiros em JAVA

  • 2. O que é um Canal  Em JAVA, todas os aspectos que se relacionam com as diferentes formas de se realizar a leitura e a escrita de dados a partir de uma fonte e para um destino, são reunidas, e abstraídas, no conceito de canal.  Um Canal é uma abstracção que pode representar quer uma fonte genérica de entrada de dados ou um destino genérico para escrita de dados de acesso sequencial e independente de dispositivos físicos concretos, formatos ou até de mecanismos de optimização de leitura e escrita.  Em JAVA, existem duas grandes classes de canais, designadamente:  Canais de caracteres (canais de texto)  Canais de bytes (canais binárias) 2
  • 3. Classes Base  Todos as classes , que implementam formas particulares de Leitura e Escrita em canais, são derivadas de quatro classes abstractas, são elas:  Para os canais de bytes: InputStream e OutputStream  Para os canais de caracteres: Reader e Writer (associados aos ficheiros)  Estas classes sendo abstractas definem o conjunto de métodos que uma qualquer implementação de tais canais deverá concretizar.  JAVA oferece serviços básicos de Entrada e Saída através de dois canais associados respectivamente às operações de bytes associada a leitura do teclado ou a e escrita no monitor:  System.in: Leitura no teclado  System.out: Escrita no monitor 3
  • 4. Canal de leitura: System.in  System.in: É o canal de leitura standard  Por omissão lê o teclado  Podemos usar System.in de várias maneiras  Directamente (acesso básico)  Em conjunto com outros canais (acesso combinado) 4
  • 5. Wrappers & Buffers O package java.io está inteligentemente desenhado. InputStreamReader Algumas das classes funcionam como classes embrulho (wrapper classes) e destinam-se a acrescentar System.in funcionalidade aos canais existentes. Por Exemplo: •InputStreamReader: Permite ler um caracter do teclado sem ser necessário converte-lo manualmente. InputStreamReader (read()) System.in •BufferedReader: Permite ler uma cadeia de caracteres do teclado sem ser necessário converte-lo manualmente BufferedReader (readLine()). 5
  • 6. Ler do teclado (Java 1.4) try { BufferedReader r = new BufferedReader( new InputStreamReader(System.in)); String s = r.readLine() ; int i = (new Integer(s)).intValue() ; System.out.println(i) ; } catch (IOException e) { } 6
  • 7. Canais de Bytes ByteArrayInputStream DataInputStream DataInput FileInputStream BufferedInputStream FilterInputStream LineNumberInputStream InputStream SequenceInputStream PushBackInputStream PipedInputStream ObjectInputStream ObjectInput Object StringBufferInputStream ByteArrayOutputStream FileOutputStream BufferedOutputStream OutputStream FilterOutputStream DataOutputStream DataOutput PipedOutputStream PrintStream ObjectOutputStream ObjectOutput RandomAccessFile 7
  • 8. Canais de Caracteres CharArrayReader InputStreamReader FileReader FilterReader PushBackReader Reader StringReader PipedReader BufferedReader LineNumberReader Object BufferedWriter CharArrayWriter OutputStreamWriter FileWriter Writer FilterWriter PipedWriter PrintWriter StringWriter StreamTokenizer 8
  • 9. Classe Scanner (JAVA 5.0)  A classe Scanner, introduzida com a versão J2SE 5.0, é uma classe nova que permite converter o texto para tipos primitivos.  java.util.Scanner  O texto pode ser obtido das mais diversas fontes tais como objectos do tipo:  Strings  InputStream  Ficheiros  A classe Scanner permite separar o texto em tokens, que são sequências de caracteres separados por delimitadores.  Por defeito, os delimitadores são os espaços em branco, tabs e mudanças de linha. 9
  • 10. Leitura do Teclado  Para ler de forma confortável texto do canal de entrada padrão, é preciso criar primeiro um Scanner sobre canal System.in que esta associado ao teclado Scanner sc = new Scanner(System.in);  Para cada um dos tipos primitivos há um método correspondente com a assinatura nextXxx() que retorne um valor desse tipo.  Se a string não puder ser interpretada como sendo deste tipo, é lançado uma excepção do tipo InputMismatchException.  Exemplos de algumas leituras de tokens:  String aToken = sc.next() ; //Lê um token  int num1 = sc.nextInt() ; //Lê um token inteiro  double num2 = sc.nextDouble() ; //Lê um token real  String linha = sc.nextLine() ; //Lê uma linha 10
  • 11. Exemplo: Ler do teclado (Java 5.0) import java.io.*; import java.util.*; class ExScanner{ public static void main(String[] args) { { Scanner scanTeclado = new Scanner(System.in); System.out.println ("Introduza um inteiro"); try { int num = scanTeclado.nextInt(); System.out.println ("Numero introduzido:" + num); } catch (InputMismatchException e) { System.out.println ("Erro na leitura do valor:" + e ); } } } 11
  • 12. Exemplo: Ler do teclado (Java 5.0) import java.io.*; import java.util.*; class ExScanner{ public static void main(String[] args) { { String str = "Vamos experimentar o scanner"; Scanner scanStr = new Scanner(str); while (scanStr.hasNext()) { System.out.println ("Token:" + scanStr.next()); } } } } 12
  • 13. Exemplo: Ler do teclado (Java 5.0) Ler int (e.g. 3501): Introduziu 123 import java.io.*; import java.util.*; Ler float (e.g. 2,43): Introduziu 2.34 public class ScanConsoleApp{ public static void main (String arg[]) { // Cria um scanner para ler do teclado Scanner scanner = new Scanner (System.in); try { System.out.printf (“Ler int (e.g. %4d): ",3501); int int_val = scanner.nextInt (); System.out.println (" Introduziu " + int_val +"n"); System.out.printf (“Ler float (e.g. %5.2f): ", 2.43); float float_val = scanner.nextFloat (); System.out.println (" Introduziu " + float_val +"n"); } catch (InputMismatchException e) { System.out.println (“Erro na leitura do valor:" + e ); } } } 13
  • 14. Ficheiros  Um ficheiro é uma entidade de armazenamento de informação permanente.  A manipulação de ficheiros é feita pela utilização de canais que derivam das classes: InputStream; Reader; OutputStream; Writer.  Os ficheiros, de acordo com o tipo de informação que podem armazenar, podem ser classificada em: Ficheiros de Texto (Orientado ao caracter)  Derivam das classes : Reader e Writer.  Fácil de ser lido por humanos com ferramentas simples (type, more, edit, ...).  Linhas com comprimento variável.  Cada linha termina com uma marca.  Exemplo: ficheiro com código-fonte em Java. Ficheiro de Dados (Orientado ao byte)  Derivam das classes : InputStream e OutputStream.  Apropriado para o processamento por ferramentas automáticas.  Armazenamento de tipos primitivos, serialização de objectos, etc.  Armazenamento independente da plataforma. 14
  • 15. A Classe File  A classe File representa os ficheiros e directorias de um sistemas de ficheiros.  Esta classe define métodos para a realização das operações sobre ficheiros e directorias:  listagem de directorias  apagar um ficheiro  determinar atributos de um ficheiro, alterar o seu nome, etc.  Definição:  File entFich = new File(cadeia de caracteres); 15
  • 16. Os métodos da Classe File CONSTRUTORES  File(String caminho) construtor de directórios/ficheiros  File(String caminho,String nome) construtor com nome separado do caminho  File(String directorio, String nome) construtor com directório e nome do ficheiro MÉTODOS  boolean canRead() ficheiro/directório pode ser lido  boolean canWrite() pode-se gravar no ficheiro/directório  boolean delete() apaga ficheiro/directório  boolean exists() verifica se ficheiro/directório existem  boolean isAbsolute() verifica se caminho é absoluto  boolean isDirectory() verifica se objecto é directório  boolean isFile() verifica se objecto é ficheiro  boolean mKdir() cria directório do objecto  boolean mKdirs() cria directórios do caminho  boolean renameTo(String novo) muda nome do ficheiro/directório para novo 16
  • 17. Exemplo: Classe File import java.io.*; class Exemplo { public static void main(String[] args) throws IOException { File meuFicheiro = new File(”dados.dat”); if (meuFicheiro.exists()) System.out.println(“dados.dat existe"); else System.out.println(" dados.dat não existe"); } } Testa a existência do ficheiro “dados.dat” 17
  • 18. Escrita Ficheiro de Texto  Passos necessários para criar um ficheiro de Texto  Criar um objecto do tipo File. Permite manipular diversos atributos de um ficheiro.  Criar um canal FileWriter ligado ao objecto File. Permite associar um ficheiro de texto a um canal de escrita.  Criar um canal tampão BufferedWriter ligado ao objecto FileWriter. Maior eficiência na escrita de um ficheiro.  Criar um canal PrintWriter ligado ao objecto BufferedWriter. Permite a utilização dos métodos print e println. 18
  • 19. Escrita com PrintWriter import java.io.*; public class PrintWriterFileApp{ public static void main (String arg[]) { File file = null; file = new File ("textOutput.txt"); try { FileWriter file_writer = new FileWriter (file); BufferedWriter buf_writer = new BufferedWriter (file_writer); PrintWriter print_writer = new PrintWriter (buf_writer); print_writer.println ("Saida com PrintWriter."); print_writer.println ("tipos primitivos convertidos em strings:"); boolean a_boolean = false; int an_int = 1234567; print_writer.println (a_boolean); print_writer.println (an_int); } catch (IOException ioe){ System.out.println("IO Exception"); } } } 19
  • 20. Escrita num ficheiro de Texto (formatado) import java.io.*; public class PrintWriterFileApp{ public static void main (String arg[]) { File file = null; file = new File ("textOutput.txt"); Formatter formatter; try { formatter = new Formatter (file); formatter.format ("Saida com PrintWriter. %n"); formatter.format ("tipos primitivos convertidos em strings: %n"); boolean a_boolean = false; int an_int = 1234567; double a_double = -4.297e-15; formatter.format ("boolean = %9b %n", a_boolean); formatter.format ("int = %9d %n", an_int); formatter.format ("double = %9.2e %n", a_double); formatter.flush (); formatter.close (); } catch (IOException ioe){ System.out.println("IO Exception"); } }} 20
  • 21. Escrita num ficheiro de Texto (formatado) formatter.format ("Saida com PrintWriter. %n"); %n –> mudança de linha Ficheiro textOutput.txt : Saida com PrintWriter. Tipos primitivos convertidos em strings: boolean = false int = 1234567 double = -4.30e-15 21
  • 22. Leitura Ficheiro de Texto  Leitura com Scanner  Leitura com File Reader  Criar um objecto do tipo File Permite manipular diversos atributos de um ficheiro.  Criar um canal FileReader ligado ao objecto do tipo File Permite a leitura de um ficheiro escrito em formato ASCII.  Criar um canal tampão BufferedReader ligado objecto do tipo FileReader Maior eficiência na leitura de um ficheiro . 22
  • 23. Leitura com Scanner import java.io.*; Ficheiro textInput.txt: import java.util.*; 123 Primeiro public class LeituraFicheiro { 234 Segundo public static void main (String arg[]) { Saida: File file = new File ("textInput.txt"); Numero inteiro lido: 123 Scanner scanner = null; Primeiro try { Numero inteiro lido: 234 scanner = new Scanner (file); Segundo while( scanner.hasNext()) Finished executing { int num = scanner.nextInt(); System.out.println ("Numero inteiro lido: " +num); System.out.println (scanner.next()); } } catch (InputMismatchException e) { System.out.println ("Mismatch exception:" + e ); } catch (FileNotFoundException e) { System.out.println ("Ficheiro não encontrado!"); System.exit (0); } }} 23
  • 24. Leitura com FileReader (Ex.1) Le um ficheiro de texto. import java.io.*; Envia para o ecrã cada linha lida. import java.util.*; class LeFicheiro { public static void main(String[] args) throws IOException { String linha; File f; FileReader fich; BufferedReader entrada = null; 24
  • 25. Leitura com FileReader (Ex.1) try { f = new File("meuFich.dat"); fich = new FileReader(f); entrada = new BufferedReader(fich); do { linha = entrada.readLine(); if (linha != null ) System.out.println(linha); } while (linha != null); } 25
  • 26. Leitura com FileReader (Ex1) catch ( IOException e) { System.out.println("Erro de I/O."); System.out.print(e); } finally { System.out.println("fim do programa."); if (entrada != null) entrada.close(); } } } 26
  • 27. Exemplo 2 import java.io.*; class ContaDigitoCaracter{ public static void main(String[] args) throws IOException { int proxValor, numMaius=0, numMinu=0, numDigitos=0, numOutros=0; char proxCar; Lê um ficheiro e retorna os números de: String nomeFicheiro; digitos; letras maisculas; letras minusculas e outros caracteres // Obtem ficheiro do utilizar System.out.print(“Nome do ficheiro: "); nomeFicheiro = Le.umaString(); File fich= new File(nomeFicheiro); // testa leitura if (fich.exists() && fich.canRead()) { // Cria os canais BufferedReader fichEnt = new BufferedReader(new FileReader(fich)); 27
  • 28. Exemplo2 // Le do ficheiro proxValor = fichEnt.read(); while (proxValor != -1){ proxCar = (char) proxValor; if (Character.isDigit(proxCar)){ numDigitos++; } else if (Character.isUpperCase(proxCar)){ numMaius++; } else if (Character.isLowerCase(proxCar)){ numMinu++; } else { numOutros++; } proxValor = fichEnt.read(); } 28
  • 29. Exemplo2 Nome do Ficheiro: ContaCar.java  Numero de digitos: 7 //fecha canal Numero de letras maisculas: 96 fichEnt.close(); Numero de letras minusculas: 1001 //Mostra resultados Numero de outros caracteres: 832 System.out.print(“Numero de digitos: “); System.out.println( numDigitos); System.out.print(“Numero de letras maisculas: “); System.out.println( numMaius); System.out.print(“Numero de letras minusculas: “); System.out.println( numMinu); System.out.print(“Numero de outros caracteres: “); System.out.println( numOutros); } else { System.out.print(“não é possível ler ficheiro: “); System.out.println(nomeEntrada); } } } 29
  • 30. Exemplo3 - Ficheiro Texto Leitura de um Ficheiro e separação de Ficheiro: accoes.dat dados ACME 6/1/96 50 46.5 49.75 SP500 6/2/96 124 122 123.5 DWMI 6/1/96 24.5 22.25 24.5 Pretende-se manipular um ficheiro (accoes.dat), no qual cada linha contem o registo de uma sessão da bolsa sobre um grupo de acções: Nome da acção, data do registo, valor mais alto obtido, valor mais baixo obtido, valor de fecho. 30
  • 31. Exemplo3 - Ficheiro Texto Leitura de um Ficheiro e separação de dados import java.io.*; import java.util.*; public class stock_data { public static void main(String args[]) { String nome_accao; Date data_registo; float valor_alto, valor_baixo, valor_fecho; try { String linha_str; int linha_numero; File fich= new File("accoes.dat"); // Cria os canais BufferedReader fichEnt = new BufferedReader(new FileReader(fich)); 31
  • 32. Exemplo3 - Ficheiro Texto Leitura de um Ficheiro e separação de dados(cont.) while ((linha_str = fichEnt.readLine()) != null) { StringTokenizer st = new StringTokenizer(linha_str); // extrai tokens e os converte para os tipos apropriados nome_accao = st.nextToken(); data_registo = new Date(st.nextToken()); valor_alto = Float.valueOf(st.nextToken()).floatValue(); valor_baixo = Float.valueOf(st.nextToken()).floatValue(); valor_fecho = Float.valueOf(st.nextToken()).floatValue(); 32
  • 33. Exemplo3 - Ficheiro Texto Leitura de um Ficheiro e separação de dados (cont.) // mostra resultado System.out.println("nome da Accao :" + nome_accao); System.out.println("Data Registo :" + data_registo); System.out.println("valores: Alto:" + valor_alto + " Baixo:" + valor_baixo + " Fecho:" + valor_fecho); System.out.println(); } fichEnt.close(); } catch (IOException e) { System.out.println("Erro I/O: " + e); } } } 33