gravação de arquivos

2 respostas
S

tenho uma aplicação de uma agenda bem simple e preciso fazer com q os dados não fiquem só na ram…

import java.io.*;

public class Agenda{  

    private Pessoa[] contatos;//contatos é a lista

    public Agenda(){

        contatos=null;//para reservar espaço na memória,quando nada tiver sido inserido

    }

    /**

     * Insere uma pessoa

     * @param Pessoa p

     */   

    public void inserir  (Pessoa p){

        if (contatos==null){

            contatos=new Pessoa[1];//cria espaço para um dado Pessoa e

            contatos[0]=p;//coloca-o na posição zero(primeira posição)

           }

        else {//senão

            aumentaCapacidade();//aumenta a capacidade do vetor (no primeiro caso será 1+1=espaço para 2 dados Pessoa)

            contatos[contatos.length -1]=p;//faz com que o p (objeto que carrega os dados de Pessoa)seja inserido na última posição(agora será 2)-1,colocando-o agora na posição 1 

           }

       }

       /**

        * Aumenta a capacidade do vetor de Pessoa

        */

       private void aumentaCapacidade(){

           Pessoa []auxiliar=new Pessoa[contatos.length+1];

           for(int i=0;i<contatos.length;i++){

               auxiliar[i]=contatos[i];

           }

           contatos=auxiliar;//a classe auxiliar serve para receber todos os dados de contatos e adicionar uma posição livre

      }

      /**

       * Exibe todos os contatos da agenda

       */

        public void show(){//método para exibir todos os dados já inseridos

            System.out.println("********* LISTA DE CONTATOS DA AGENDA ***********");

            for (int i=0;i<contatos.length;i++){

                System.out.println("Nome:"+contatos[i].getNome());

                System.out.println("Telefone"+contatos[i].getFone());

                System.out.println("Idade"+contatos[i].getIdade());

                System.out.println("*********************************");

            }

        }

        /**

         * Busca contato pelo nome n

         * @param String n

         */

        public  void buscaNome (String n) {

            boolean achou=false;

               for ( int i=0; i <contatos.length; i++)   

               {

                   if (contatos[i].getNome().equals(n)) {

                      System.out.println("fone" + contatos[i].getFone()); 

                      achou = true;

                   }  

              }

              if (!achou){

                  System.out.println("Nenhum contato com este nome na lista");

              }

        } 

        /**

         * Busca contato pelo telefone f

         * @param String f

         */

        public  void buscaFone (String f) {

            boolean achou = false;

               for ( int i=0; i <contatos.length; i++)   

               {

                   if (contatos[i].getFone().equals(f)) {

                      System.out.println("Nome" + contatos[i].getNome());

                      achou = true;

                   }  

               }

               if (!achou){

                  System.out.println("Nenhum contato com este fone na lista");

              }

        }

        /**

         * Busca contato pelo telefone f

         * @param int d

         */

        

       public  void buscaId (int d) {

           boolean achou = false;

               for ( int i=0; i <contatos.length; i++){

                   if (contatos[i].getIdade()==d) {

                      System.out.println("Nome" + contatos[i].getNome() + "  Fone: " + contatos[i].getFone()); 

                      achou = true;

                   }  

              }

               if (!achou){

                  System.out.println("Nenhum contato com esta idade na lista");

              }

              

       }

        

       /**

        * Ler dados de pessoas

        */ 

       public void lerDados(){

          BufferedReader in =new BufferedReader(new InputStreamReader(System.in));//var in do tipo bufferReaderfuncao usada quando utiliza-se um método de impressão e leitura

          Pessoa p;

          String opcao="", s="",r="";

          int i=0;

          do{

             try{//usado para teste quando tiver entrada e leitura onde o usuário pode digitar opções inválidas

               System.out.print("Digite o nome: ");

               s=in.readLine();

               System.out.print("Digite o telefone: ");

               r=in.readLine();

               System.out.print("Idade: ");

               i=Integer.parseInt(in.readLine());

               p=new Pessoa(s,r,i);

               if (i>=0){

                 inserir(p);

                 gravar();

               }

               System.out.print("DESEJA SAIR? (S/N): ");

               opcao=in.readLine();

               //p.nome="Ana";//não pode fazer isto porque eu estou fora da classe e nome é um atributo privado

            } catch(Exception e){

                System.out.println("Erro de leitura");

              }

        }while ((opcao.equals("N"))||(opcao.equals("n")));//equals não pode ser usado para int,float..

       

     }

     /**

      * Apresenta as opcoes de busca para o usuario

      */

      public  void busca(){

         BufferedReader in =new BufferedReader(new InputStreamReader(System.in));//var in do tipo bufferReaderfuncao usada quando utiliza-se um método de impressão e leitura

         int opcao = 0, id=0; 

         String n="";

         do{

           try{

               System.out.println("(1) Busca por nome");  

               System.out.println("(2) Buscar  por telefone");

               System.out.println("(3) Busca por idade");

               System.out.println("(4) Voltar");

               opcao=Integer.parseInt(in.readLine());//tem que converter pois a entrada do teclado é string*readLine só lê inteiro e string

               switch(opcao){

                   case 1:

                     System.out.println("Digite o nome:");

                     n=in.readLine();

                     buscaNome(n);

                     break;

                   case 2:

                     System.out.println("Digite o telefone:");

                     n=in.readLine();

                     buscaFone(n);

                     break;

                   case 3:

                     System.out.println("Digite a idade:");

                     id=Integer.parseInt(in.readLine());

                     buscaId(id);

                     break;

                   default:

                     System.out.println("Opção inválida");

              }

           }catch (Exception e){

               System.out.println("Erro de leitura de dados");

            }

        }while (opcao!=4);       

     }

     /**

      * Método para excluir dados

      */

     

     public void excluir(){

         BufferedReader in =new BufferedReader(new InputStreamReader(System.in));

         String opcao=" ";

      try{

         for(int i=0;i<contatos.length;i++){

             System.out.println(contatos[i].getNome() +contatos[i].getFone() + contatos[i].getIdade());

             System.out.println("Deseja excluir? <S> <N>");

             opcao=in.readLine();

                if(opcao.equals("S") || opcao.equals("s")){

                    int k=0;

                    Pessoa[]aux=new Pessoa[contatos.length - 1];

                        for(int j=0;j<contatos.length;j++){

                            if(j!=i){

                                aux[k]=contatos[j];

                                k++;

                            }else {i--;}

                        }contatos=aux;

                } 

            }  

        }catch (Exception e){

               System.out.println("Erro de leitura de dados");

         }  

        }

      /**

      * Método para gravar dados

      */

     

     public void gravar(){

         

         try{

             File dados =new File("C:\\Documents and Settings\\RODRIGO\\Desktop\\menu\\dados\\");       

             dados.mkdir();

             File arquivo = new File(dados, "info.txt");

             FileOutputStream out = new FileOutputStream(arquivo);

             out.write (new byte [] {'i','n','f','o'}); 

         }catch (Exception e){

               System.out.println("Arquivo gravado");

         }  

        

     }

}

Alguem pode me ajudar com isso???

[size=“11”][color=“red”]* Editado: Lembre-se de utilizar BBCode em seus códigos - Carneiro[/color][/size] :joia:

2 Respostas

S

Edita o teu post e mete o teu código com BBCode senão não se percebe, o teu código é extenso e perde-se o raciocínio rápido deste modo.

C

E qual o erro, dúvida ou pergunta?

Criado 9 de junho de 2007
Ultima resposta 9 de jun. de 2007
Respostas 2
Participantes 3