Jump to content
Innight

Ficheiros binarios

Recommended Posts

Innight

Boas.alguem me podia dar um exemplo de passar valores de um arraylist para ficheiros binários para ficarem guardados?

Obrigado

Share this post


Link to post
Share on other sites
IceBrain

Guardar objectos em ficheiros binários chama-se "serializar".

Para serializar, basta fazer:

ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream(filename));
outputStream.writeObject(meu_objecto);

Agora, para um objecto poder ser serializado, este tem que implementar a interface Serializable, portanto se os objectos que estás a guardar no ArrayList forem de uma classe criada por ti, tens que ver este artigo da Wiki para saber como implementar essa interface.


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
Innight

Boa estive a tentar implementar mas não sei o que poder numa parte do código

package trabalho_intercalar;

import java.io.IOException;
import java.util.Scanner;
import java.util.*;
import java.util.ArrayList;
import java.io.Serializable;
    //Superclass Pessoa
public class Biblioteca {

/*
interface DVD{
   void NumeroEdicao();
}

interface CD{
   void NumeroEdicao();
}

interface Software{
   void NumeroEdicao();
}

interface Livro{
   void NumeroEdicao();
}

    */
public static class Pessoa{

//class
      private String  Primeiro_nome,Apelido , Morada, Cidade, Distrito,Email;
      private int Numero,Codigo_postal,Telefone,Telemovel;
        

         //heranças
        Pessoa(String Primeiro_nome,String Apelido, String Morada, String Cidade,String Distrito,String Email,int Numero,int Codigo_postal,int Telefone,int Telemovel){
            this.Primeiro_nome=Primeiro_nome;
            this.Apelido=Apelido;
            this.Morada=Morada;
            this.Cidade=Cidade;
            this.Distrito=Distrito;
            this.Email=Email;

            this.Numero = Numero;
            this.Codigo_postal = Codigo_postal;
            this.Telefone=Telefone;
            this.Telemovel=Telemovel;
        }

        //gets e sets
        public String getApelido(){return Apelido;}
        public void setApelido(String a){Apelido=a;}

        public String getPrimeiro_nome(){return Primeiro_nome;}
        public void setPrimeiro_nome(String pn){Primeiro_nome=pn;}

        public String getMorada(){return Morada;}
        public void setMorada(String m){Morada=m;}

        public String getCidade(){return Cidade;}
        public void setCidade(String c){Cidade=c;}

        public String getDistrito(){return Distrito;}
        public void setDistrito(String d){Distrito=d;}

        public String getEmail(){return Email;}
        public void setEmail(String e){Email=e;}

        public int getNumero(){return Numero;}
        public void setNumero(int n){Numero=n;}

        public int getCodigo_postal(){return Codigo_postal;}
        public void setCodigo_postal(int cp){Codigo_postal=cp;}

        public int getTelefone(){return Telefone;}
        public void setTelefone(int t){Telefone=t;}


        public int getTelemovel(){return Telemovel;}
        public void setTelemovel(int tm){Telemovel=tm;}

        public String toString()
        {
            String Mensagem =
                              "Telemovel: " + Telemovel + "\n" +
                               "Telefone: " + Telefone + "\n";

            return Mensagem;

        }
       Pessoa()
       {
        super(); // Construtor
    }

    }

    //Classe Funcionario

   public static class Funcionario  extends Pessoa implements Serializable{
        private String  Departamento;
        private int n_empresa;
       

        public String getDepartamento(){return Departamento;}
        public void setDepartamento(String d){Departamento=d;}

        public int getN_empresa(){return n_empresa;}
        public void setN_empresa(int n_emp){n_empresa=n_emp;}

        public Funcionario(){
        super();

        this.Departamento = Departamento;
        this.n_empresa = n_empresa;
        }

    }
    //Classe Cliente
    public static class Cliente extends Pessoa{
        private int Numero_de_identificacao;

        public int getNumero_de_identificacao(){return Numero_de_identificacao;}
        public void setNumero_de_identificacao (int n_identi){Numero_de_identificacao=n_identi;}

        public Cliente(){
        super();
        this.Numero_de_identificacao = Numero_de_identificacao;
        }
    }

//Classe Recursos
    public static class Recursos extends Pessoa {
        private String  Nome_livro,Editora, Autor, Disponibilidade;
        private int Numero_do_livro,Edicao;


        public int getNumero_recurso() {return Numero_do_livro;}
        public void setNumero_recurso(int num_livro) {Numero_do_livro=num_livro;}
        public String getNome() {return Nome_livro;}
        public void setNome(String no_livro) {Nome_livro=no_livro;}
        public int getEdicao() {return Edicao;}
        public void setEdicao(int e) {Edicao=e;}
        public String getEditora() {return Editora;}
        public void setEditora(String ed) {Editora=ed;}
        public String getAutor() {return Autor;}
        public void setAutor(String a) {Autor=a;}
        public String getDisponibilidade() {return Disponibilidade;}
        public void setDisponibilidade(String d) {Disponibilidade=d;}

        public Recursos( ){
        super();
        this.Numero_do_livro = Numero_do_livro;
        this.Editora = Editora;
        this.Autor = Autor;
        this.Disponibilidade = Disponibilidade;
        this.Edicao = Edicao;
        }
    }
}

no código principal

package trabalho_intercalar;

import java.util.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import trabalho_intercalar.Biblioteca.Pessoa;
import trabalho_intercalar.Biblioteca.Funcionario;
import trabalho_intercalar.Biblioteca.Cliente;
import trabalho_intercalar.Biblioteca.Recursos;

public class Main{

static ArrayList<Funcionario> arrayf = new ArrayList<Funcionario>();
static Funcionario func;

static ArrayList<Cliente> arrayc = new ArrayList<Cliente>();
static Cliente client;

static ArrayList<Recursos> arrayr = new ArrayList<Recursos>();
static Recursos rec;

static Pessoa pes1 = new Pessoa();
static Pessoa pes2 = new Pessoa();



//funcionario
public static void criarNovoFunc()
{
     func = new Funcionario();
       String nomeFicheiro= "ArrayListFuncionarios.dat";
     Scanner sc = new Scanner(System.in);
     System.out.println("Introduza o primeiro Nome: ");
     String primeiro_nome = sc.nextLine();
     func.setPrimeiro_nome(primeiro_nome);
     System.out.println("Introduza o Apelido: ");
     String Apelido = sc.nextLine();
     func.setApelido(Apelido);
     System.out.println("Introduza o Departamento: ");
     String Departamento = sc.nextLine();
     func.setDepartamento(Departamento);
        System.out.println("Introduza o Numero de identificação: ");
     int n_empresa = sc.nextInt();
     func.setN_empresa(n_empresa);

     arrayf.add(func);


    
System.out.println ("Foi adicionado um Funcionario ");
System.out.println ("===========================================");

    }

  static  public void listarFuncionarios()
{
      String nomeFicheiro= "ArrayListFuncionarios.dat";
      
for(int a=0; a< arrayf.size();a++){
  System.out.println(arrayf.get(a).getPrimeiro_nome());
  System.out.println(arrayf.get(a).getApelido());
  System.out.println(arrayf.get(a).getDepartamento());
  System.out.println(arrayf.get(a).getN_empresa());
  
    //System.out.println("Total Funcionarios "+ arrayf.size());
    
     // Iterator<Funcionario> itr = arrayf.iterator();
   //while (itr.hasNext()) {
     //Funcionario element = itr.next();
      //System.out.print(element + " ");
   
}
    }

  private void writeObject(ObjectOutputStream out) throws IOException {
        out.writeObject(func.setPrimeiro_nome(null));

    }

Não sei que variavel introduzir no

out.writeObject(func.setPrimeiro_nome(null));??

Share this post


Link to post
Share on other sites
S7sRuss

Será bem mais simples e rápido fazer com serialização do que não fazer.

Portanto, lê um pouco sobre serialização e vê alguns exemplos:

Em inglês:

- http://www.javabeginner.com/uncategorized/java-serialization

Em português:

- http://wmagician.wordpress.com/2008/02/14/serializacao-de-objectos-em-java/

- http://www.devmedia.com.br/articles/viewcomp.asp?comp=3050


"Lamento... Detectou mais de dez mil ficheiros infectados..."

Share this post


Link to post
Share on other sites
Innight

/*
*/


package trabalho_intercalar;


import java.util.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.ListIterator;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import trabalho_intercalar.Biblioteca.Pessoa;
import trabalho_intercalar.Biblioteca.Funcionario;
import trabalho_intercalar.Biblioteca.Cliente;
import trabalho_intercalar.Biblioteca.Recursos;

public class Main{

static ArrayList<Funcionario> arrayf = new ArrayList<Funcionario>();
static Funcionario func;

static ArrayList<Cliente> arrayc = new ArrayList<Cliente>();
static Cliente client;

static ArrayList<Recursos> arrayr = new ArrayList<Recursos>();
static Recursos rec;

static Pessoa pes1 = new Pessoa();
static Pessoa pes2 = new Pessoa();

public List<Funcionario> funcionarios;
String nomeFicheiro= "C:/Users/J/Desktop/saida";


//gravar funcionario
public void gravarFuncionario()
{
    try
        {
            ObjectOutputStream streamSaida= new ObjectOutputStream(new FileOutputStream(nomeFicheiro));
            streamSaida.writeObject(func);
            streamSaida.close();
        }
catch(IOException e)
        {
            System.out.println("Erro ao escrever no ficheiro " + nomeFicheiro+ ".");
            System.exit(0);
        }
}

public void lerFicheiroFuncionario()
{
    try
    {
        ObjectInputStream streamEntrada= new ObjectInputStream(new FileInputStream(nomeFicheiro));
        funcionarios = (List)streamEntrada.readObject();
        streamEntrada.close();
    }

    catch(Exception e)
    {
        System.out.println("O ficheiro não existe!Sera criado despois de sair CORRECTAMENTE do programa.");
   //     System.exit(0);
    }
}
//funcionario
public static void criarNovoFunc()
{
     func = new Funcionario();
       String nomeFicheiro= "ArrayListFuncionarios.dat";
     Scanner sc = new Scanner(System.in);
     System.out.println("Introduza o primeiro Nome: ");
     String primeiro_nome = sc.nextLine();
     func.setPrimeiro_nome(primeiro_nome);
     System.out.println("Introduza o Apelido: ");
     String Apelido = sc.nextLine();
     func.setApelido(Apelido);
     System.out.println("Introduza o Departamento: ");
     String Departamento = sc.nextLine();
     func.setDepartamento(Departamento);
        System.out.println("Introduza o Numero de identificação: ");
     int n_empresa = sc.nextInt();
     func.setN_empresa(n_empresa);

     arrayf.add(func);
System.out.println ("Foi adicionado um Funcionario ");
System.out.println ("===========================================");



    }

  static  public void listarFuncionarios()
{
      String nomeFicheiro= "ArrayListFuncionarios.dat";
      
for(int a=0; a< arrayf.size();a++){
  System.out.println(arrayf.get(a).getPrimeiro_nome());
  System.out.println(arrayf.get(a).getApelido());
  System.out.println(arrayf.get(a).getDepartamento());
  System.out.println(arrayf.get(a).getN_empresa());
  
    //System.out.println("Total Funcionarios "+ arrayf.size());
    
     // Iterator<Funcionario> itr = arrayf.iterator();
   //while (itr.hasNext()) {
     //Funcionario element = itr.next();
      //System.out.print(element + " ");
   
}
    }

static public void criarNovoClient()
{
     client = new Cliente();
     
     Scanner sc = new Scanner(System.in);
     System.out.println("Introduza  o primeiro Nome: ");
     String primeiro_nome = sc.nextLine();
     client.setPrimeiro_nome(primeiro_nome);
     System.out.println("Introduza o Apelido: ");
     String Apelido = sc.nextLine();
     client.setApelido(Apelido);
     System.out.println("Introduza  a sua morada: ");
     String Morada = sc.nextLine();
     client.setMorada(Morada);
     System.out.println("Introduza  o seu telemovel: ");
     int Telemovel = sc.nextInt();
     client.setTelemovel(Telemovel);
     System.out.println("Introduza  o Numero de identificação: ");
     int n_ident = sc.nextInt();
     client.setNumero_de_identificacao(n_ident);

     arrayc.add(client);
    
System.out.println ("Foi adicionado um Cliente ");
System.out.println ("===========================================");
}

  static  public void listarClientes()
{
for(int a=0; a< arrayc.size();a++){
  System.out.println(arrayc.get(a).getNumero_de_identificacao());
  System.out.println(arrayc.get(a).getPrimeiro_nome());
  System.out.println(arrayc.get(a).getApelido());
  System.out.println(arrayc.get(a).getMorada());
  System.out.println(arrayc.get(a).getTelemovel());

    //System.out.println("Total Funcionarios "+ arrayf.size());

     // Iterator<Funcionario> itr = arrayf.iterator();
   //while (itr.hasNext()) {
     //Funcionario element = itr.next();
      //System.out.print(element + " ");
    }
}
static public void criarNovoRecurso()
{
     rec = new Recursos();
     Scanner sc = new Scanner(System.in);

    
     System.out.println("Introduza  o Nome: ");
     String nome = sc.nextLine();
     rec.setNome(nome);
     System.out.println("Introduza a disponibilidade: ");
     String dispon = sc.nextLine();
     rec.setDisponibilidade(dispon);
     System.out.println("Introduza  o Numero do recurso: ");
     int n_rec = sc.nextInt();
     rec.setNumero_recurso(n_rec);
     arrayr.add(rec);

System.out.println ("Foi adicionado um Recurso ");
System.out.println ("===========================================");
}

  static  public void listarRecursos()
{
for(int a=0; a< arrayr.size();a++){
  System.out.println(arrayr.get(a).getNumero_recurso());
  System.out.println(arrayr.get(a).getNome());
  System.out.println(arrayr.get(a).getDisponibilidade());

    

     // Iterator<Funcionario> itr = arrayf.iterator();
   //while (itr.hasNext()) {
     //Funcionario element = itr.next();
      //System.out.print(element + " ");
    }
System.out.println("\nTotal de recursos "+ arrayr.size());
}


/*
    public void existe(String nome)
{
int i=0;
for (String profs : arrayList)
{
if (profs.contains(nome)==true)
{
i++;
}
}
if (i==0)
System.out.println("Não Existe");
if (i>0)
System.out.println("Foram encontradas "+i+" ocorrencias do nome "+nome);
System.out.println("=================================================");
}
public void apagarTudo()
{
arrayList.clear();
System.out.println("Todos os registos foram apagados");
}
public void apagaFuncionario(String nome)
{
arrayList.remove(nome);
}
*/

static public  void mostrarCaracteristicas(Pessoa obj) {


System.out.print("Esta Pessoa tem as seguintes características:\n"
+ "Primeiro Nome: " + obj.getPrimeiro_nome() + "\"\n"
+ "Apelido: "+ obj.getApelido() + "\n"
+ "Morada: "+ obj.getMorada() + "\n"
+ "Cidade : " + obj.getCidade() + "\n"
+ "Distrito: " + obj.getDistrito() + "\n"
+ "Email: " + obj.getEmail() + "\n"
+ "Numero: " + obj.getNumero() + "\n"
+ "Codigo_postal: " + obj.getCodigo_postal() + "\n"
+ "Telefone: " + obj.getTelefone() + "\n"
+ "Telemovel: " + obj.getTelemovel() + "\n");

    }
   
        public static void main(String arg[]) {
            //criar pessoas automaticamente
            pes1.setPrimeiro_nome("Ze");
            pes1.setApelido("Couves");
            pes1.setCidade("gdfgdf");
            pes1.setCodigo_postal(23243);
            pes1.setDistrito("f");
            pes1.setEmail("dsadcxv@vgsgf.com");
            pes1.setMorada("asda");
            pes1.setNumero(12);
            pes1.setTelefone(34243);
            pes1.setTelemovel(343534);
            //pessoa 2
            pes2.setPrimeiro_nome("tim");
            pes2.setApelido("tam");
            pes2.setCidade("czcz");
            pes2.setCodigo_postal(2567);
            pes2.setDistrito("dis");
            pes2.setEmail("bvc");
            pes2.setMorada("asda");
            pes2.setNumero(12);
            pes2.setTelefone(34243);
            pes2.setTelemovel(12)  ;
            
// mostrarCaracteristicas(pes1);
// mostrarCaracteristicas(pes2);
            // Menu
             Scanner scan = new Scanner(System.in);
            int menuSelect = 0;
            int menuSelect1 = 0;
            int menuSelect2 = 0;
            int menuSelect3 = 0;
            do {
            System.out.println("Selecione a opção sff");
            System.out.println("");
            System.out.println("(1) - Funcionario      :     (2) - Cliente     :     (3) - Recursos     :     (0) - Sair");
           
            menuSelect = scan.nextInt();
       
            switch (menuSelect)
            {
                case 1:
                    if(menuSelect == 1) {

                         do {
                        System.out.println("Selecione a opção sff");
                        System.out.println("");
                        System.out.println("(1) - Criar Funcionarios     :     (2) - Alterar Funcionarios    :     (3) - Apresentar Funcionarios    :     (0) - Sair");
                        
                        menuSelect1 = scan.nextInt();
                        switch (menuSelect1)
                        {
                            case 1:
                                if(menuSelect1 == 1) {
                                    criarNovoFunc();
                                }
                                break;
                            case 3:
                                if(menuSelect1 == 3) {
                                    listarFuncionarios();

                                }
                                break;
                        }
                        } while (menuSelect1 != 0);
                         
                      }
                case 2:
                    if(menuSelect ==2) {
                        do {
                        System.out.println("Selecione a opção sff");
                        System.out.println("");
                        System.out.println("(1) - Criar Clientes     :     (2) - Alterar Clientes     :     (3) - Apresentar Clientes   :     (0) - Sair");
                        
                        menuSelect2 = scan.nextInt();

                         switch (menuSelect2)
                        {
                            case 1:

                                if(menuSelect2 == 1) {
                                    criarNovoClient();
                                }
                                break;
                                case 3:
                                if(menuSelect2 == 3) {
                                    listarClientes();
                                }
                                break;
                         }
                        } while (menuSelect2 != 0);
                                }
             break;
                case 3:
                    if (menuSelect ==3){
                         do {
                        System.out.println("Selecione a opção sff");
                        System.out.println("");
                        System.out.println("(1) - Criar Recursos      :     (2) - Alterar Recursos    :     (3) - Apresentar Recursos    :     (0) - Sair");
                        menuSelect3 = scan.nextInt();

                         switch (menuSelect3)
                        {
                            case 1:

                                if(menuSelect3 == 1) {
                                       criarNovoRecurso();
                                       
                                }
                                break;
                                 case 3:
                                if(menuSelect3 == 3) {
                                    listarRecursos();
                                }
                                break;
                         }
                        } while (menuSelect3 != 0);
                                }
}
                  
          } while (menuSelect != 0);
          
System.out.println("bye");      
    }
}
           

       

como eu chamo a funcão gravarFuncionario no menu e a lerFicheiroFuncionario, diz-me que não posso chamar na main valores que não sejam static:S

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.