SlideShare une entreprise Scribd logo
1  sur  33
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

Contenu connexe

Tendances

BD I - Aula 08 B - Algebra Relacional - Exercicios Resolucao
BD I - Aula 08 B - Algebra Relacional - Exercicios ResolucaoBD I - Aula 08 B - Algebra Relacional - Exercicios Resolucao
BD I - Aula 08 B - Algebra Relacional - Exercicios ResolucaoRodrigo Kiyoshi Saito
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação João Piedade
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesLeinylson Fontinele
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem JavaUFPA
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - JavaArthur Emanuel
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfacesRafael Pinheiro
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 

Tendances (20)

BD I - Aula 08 B - Algebra Relacional - Exercicios Resolucao
BD I - Aula 08 B - Algebra Relacional - Exercicios ResolucaoBD I - Aula 08 B - Algebra Relacional - Exercicios Resolucao
BD I - Aula 08 B - Algebra Relacional - Exercicios Resolucao
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Estrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e FunçõesEstrutura de Dados - Aula 03 - Ponteiros e Funções
Estrutura de Dados - Aula 03 - Ponteiros e Funções
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Introdução a Linguagem Java
Introdução a Linguagem JavaIntrodução a Linguagem Java
Introdução a Linguagem Java
 
Linguagem Java
Linguagem JavaLinguagem Java
Linguagem Java
 
Exercícios - Herança - Java
Exercícios - Herança - JavaExercícios - Herança - Java
Exercícios - Herança - Java
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Python Orientação a Objeto
Python Orientação a ObjetoPython Orientação a Objeto
Python Orientação a Objeto
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Linguagem C - Estruturas
Linguagem C - EstruturasLinguagem C - Estruturas
Linguagem C - Estruturas
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
JAVA - Orientação a Objetos
JAVA - Orientação a ObjetosJAVA - Orientação a Objetos
JAVA - Orientação a Objetos
 
Algoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e MatrizesAlgoritmo 06 - Array e Matrizes
Algoritmo 06 - Array e Matrizes
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 

Similaire à Ficheiros em JAVA

Introdução a Java IO
Introdução a Java IOIntrodução a Java IO
Introdução a Java IOrdgse
 
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
 
Apresentação java io
Apresentação java ioApresentação java io
Apresentação java ioSilvino Neto
 
java.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosjava.io - fluxos (streams) e arquivos
java.io - fluxos (streams) e arquivosMarcello Thiry
 
Java recursos avançados - streams
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streamsArmando Daniel
 
F I C+ + L P 05
F I C+ + L P 05F I C+ + L P 05
F I C+ + L P 05t34m0nana
 
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 TutorialFabio 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 pentestEdson Celio
 
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 dadosProfessor Samuel Ribeiro
 

Similaire à Ficheiros em JAVA (20)

Introdução a Java IO
Introdução a Java IOIntrodução a Java IO
Introdução a Java IO
 
Entrada e Saída
Entrada e SaídaEntrada e Saída
Entrada e Saída
 
Java 15
Java 15Java 15
Java 15
 
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
 

Plus de 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. - faqPedro De Almeida
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsPedro De Almeida
 
XSD Incomplete Overview Draft
XSD Incomplete Overview DraftXSD Incomplete Overview Draft
XSD Incomplete Overview DraftPedro 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 1Pedro De Almeida
 
Validation of a credit card number
Validation of a credit card numberValidation of a credit card number
Validation of a credit card numberPedro 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íclicosPedro 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 canalPedro 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-ZivPedro 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éticaPedro 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 fontePedro De Almeida
 
Sessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosSessão 6 codificadores estatísticos
Sessão 6 codificadores estatísticosPedro 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 unicidadePedro 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ívocosPedro 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 EntropiasPedro 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çaPedro De Almeida
 
Avaliação económica de projectos
Avaliação económica de projectosAvaliação económica de projectos
Avaliação económica de projectosPedro De Almeida
 

Plus 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
 
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
 
Avaliação económica de projectos
Avaliação económica de projectosAvaliação económica de projectos
Avaliação económica de projectos
 

Dernier

ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedJaquelineBertagliaCe
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...AnaAugustaLagesZuqui
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...MariaCristinaSouzaLe1
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Centro Jacques Delors
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeLEONIDES PEREIRA DE SOUZA
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfAutonoma
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfJuliana Barbosa
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdLeonardoDeOliveiraLu2
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docPauloHenriqueGarciaM
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024azulassessoria9
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)Centro Jacques Delors
 

Dernier (20)

ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de LedAula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
Aula 67 e 68 Robótica 8º ano Experimentando variações da matriz de Led
 
Novena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João EudesNovena de Pentecostes com textos de São João Eudes
Novena de Pentecostes com textos de São João Eudes
 
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
Tema de redação - As dificuldades para barrar o casamento infantil no Brasil ...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)Sopa de letras | Dia da Europa 2024 (nível 2)
Sopa de letras | Dia da Europa 2024 (nível 2)
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
Acessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidadeAcessibilidade, inclusão e valorização da diversidade
Acessibilidade, inclusão e valorização da diversidade
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Caderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdfCaderno de exercícios Revisão para o ENEM (1).pdf
Caderno de exercícios Revisão para o ENEM (1).pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.docGUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
GUIA DE APRENDIZAGEM 2024 9º A - História 1 BI.doc
 
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 2 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Quiz | Dia da Europa 2024 (comemoração)
Quiz | Dia da Europa 2024  (comemoração)Quiz | Dia da Europa 2024  (comemoração)
Quiz | Dia da Europa 2024 (comemoração)
 

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