Problemas com serialização

1 resposta
PetersonAzv

Salve galera.

Estou com uma dificuldade aqui com Serialização, na real na parte de leitura.
Não sei se é bem avançado, mas por vias da duvida resolvi postar aqui.

Estou fazendo um trabalho da faculdade, e travei nessa parte.

Tenho o código abaixo, o qual deve ser um menu que deveria instanciar um metodo para exibir a lista de dados inscritos nos objetos serializados...
Contudo não consigo instanciar o método que fiz no Main. LerArquivoSerializado
Segue abaixo o codigo. Agradeço se puderem me dar uma explanada.
Creio que o método de leitura e escrita de arquivos serializados está correto.

package locadora;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Main {
	private static String dvdPath;
	private static String livroPath;
	private static String socioPath;
	private static String autorPath;
	
	private static ArrayList<Dvd> listaDvd;
	private static ArrayList<Livro> listaLivro;
	private static ArrayList<Socio> listaSocio;
	private static ArrayList<Autor> listaAutor;
	
	
	

	/**
	 * @param args
	 * @param List 
	 */
	public static void main(String[] args) {
		leArquivoConfiguracao("c:\\locadora\\conf.txt");
		leArquivosBinarios();
		Menu.main(args);
		gravarArquivosBinarios();

	}

	public static void leArquivoConfiguracao(String path){
		File conf = new File(path);
		if (conf.isFile()) {
			try {
				InputStream is = new FileInputStream(conf);
				InputStreamReader isr = new InputStreamReader(is);
				BufferedReader br = new BufferedReader(isr);
				String s1 = br.readLine();
				String s2 = br.readLine();
				String s3 = br.readLine();
				String s4 = br.readLine();
				String s5 = br.readLine();
				dvdPath = new String(s1+s2);
				livroPath = new String(s1+s3);
				socioPath = new String(s1+s4);
				autorPath = new String(s1+s5);
			} catch (IOException e) {
				System.out.println("Erro 02: Não foi possivel ler o arquivo de configuração.");
			}
		}else {
			System.out.println("Erro 01: Arquivo não encontrado.");
		}
	}
	
	
	private static void leArquivosBinarios() {
		listaDvd = (ArrayList<Dvd>) LerArquivoSerializado(dvdPath, listaDvd);
		if (listaDvd==null) {
			listaDvd = new ArrayList<Dvd>();
		}		 
		listaLivro = (ArrayList<Livro>)LerArquivoSerializado(livroPath, listaLivro);
		if (listaLivro==null) {
			listaLivro = new ArrayList<Livro>();
		}
		listaSocio = (ArrayList<Socio>)LerArquivoSerializado(socioPath, listaSocio);
		if (listaSocio==null) {
			listaSocio = new ArrayList<Socio>();
		}
		listaAutor = (ArrayList<Autor>)LerArquivoSerializado(autorPath, listaAutor);
		if (listaAutor==null) {
			listaAutor = new ArrayList<Autor>();
		}
	}
	
	private static void gravarArquivosBinarios() {
		 GravaArquivoSerializado(dvdPath, listaDvd);
		 GravaArquivoSerializado(livroPath, listaLivro);
		 GravaArquivoSerializado(socioPath, listaSocio);
		 GravaArquivoSerializado(autorPath, listaAutor);
	}
	
	public static void addDvd(Dvd dvd){
		listaDvd.add(dvd);
	}
	
	public static void addLivro(Livro livro){
		listaLivro.add(livro);
	}
	public static void addSocio(Socio socio){
		listaSocio.add(socio);
	}
	public static void addAutor(Autor autor){
		listaAutor.add(autor);
	}
	
	public static List<Dvd> getListaDvd() {
		return listaDvd;
	}

	public static void setListaDvd(List<Dvd> listaDvd) {
		Main.listaDvd = (ArrayList<Dvd>) listaDvd;
	}

	public static List<Livro> getListaLivro() {
		return listaLivro;
	}

	public static void setListaLivro(List<Livro> listaLivro) {
		Main.listaLivro = (ArrayList<Livro>) listaLivro;
	}

	public static List<Socio> getListaSocio() {
		return listaSocio;
	}

	public static void setListaSocio(List<Socio> listaSocio) {
		Main.listaSocio = (ArrayList<Socio>) listaSocio;
	}

	public static List<Autor> getListaAutor() {
		return listaAutor;
	}

	public static void setListaAutor(List<Autor> listaAutor) {
		Main.listaAutor = (ArrayList<Autor>) listaAutor;
	}
	public static List LerArquivoSerializado(String path, List<?> lista){
		try {
			FileInputStream arq = new FileInputStream(path);
			ObjectInputStream ois = new ObjectInputStream(arq);
			lista = (List<?>) ois.readObject();
			ois.close();
			arq.close();
			return lista;
		}
		catch (Exception e){
			e.printStackTrace();
		}

		
		return null;	
	
	}
	public static void GravaArquivoSerializado (String path, List<?> lista){
		try {
			FileOutputStream arq = new FileOutputStream(path);
			ObjectOutputStream oos = new ObjectOutputStream (arq);
			oos.writeObject(lista);
			oos.flush();
			oos.close();
			arq.flush();
			arq.close();
			System.out.println("Arquivo gravado com sucesso! "+path);
		}
		catch (Exception e){
			e.printStackTrace();
			}
		
		}
		

}
Main
package locadora;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

public class Main {
	private static String dvdPath;
	private static String livroPath;
	private static String socioPath;
	private static String autorPath;
	
	private static ArrayList<Dvd> listaDvd;
	private static ArrayList<Livro> listaLivro;
	private static ArrayList<Socio> listaSocio;
	private static ArrayList<Autor> listaAutor;
	
	
	

	/**
	 * @param args
	 * @param List 
	 */
	public static void main(String[] args) {
		leArquivoConfiguracao("c:\\locadora\\conf.txt");
		leArquivosBinarios();
		Menu.main(args);
		gravarArquivosBinarios();

	}

	public static void leArquivoConfiguracao(String path){
		File conf = new File(path);
		if (conf.isFile()) {
			try {
				InputStream is = new FileInputStream(conf);
				InputStreamReader isr = new InputStreamReader(is);
				BufferedReader br = new BufferedReader(isr);
				String s1 = br.readLine();
				String s2 = br.readLine();
				String s3 = br.readLine();
				String s4 = br.readLine();
				String s5 = br.readLine();
				dvdPath = new String(s1+s2);
				livroPath = new String(s1+s3);
				socioPath = new String(s1+s4);
				autorPath = new String(s1+s5);
			} catch (IOException e) {
				System.out.println("Erro 02: Não foi possivel ler o arquivo de configuração.");
			}
		}else {
			System.out.println("Erro 01: Arquivo não encontrado.");
		}
	}
	
	
	private static void leArquivosBinarios() {
		listaDvd = (ArrayList<Dvd>) LerArquivoSerializado(dvdPath, listaDvd);
		if (listaDvd==null) {
			listaDvd = new ArrayList<Dvd>();
		}		 
		listaLivro = (ArrayList<Livro>)LerArquivoSerializado(livroPath, listaLivro);
		if (listaLivro==null) {
			listaLivro = new ArrayList<Livro>();
		}
		listaSocio = (ArrayList<Socio>)LerArquivoSerializado(socioPath, listaSocio);
		if (listaSocio==null) {
			listaSocio = new ArrayList<Socio>();
		}
		listaAutor = (ArrayList<Autor>)LerArquivoSerializado(autorPath, listaAutor);
		if (listaAutor==null) {
			listaAutor = new ArrayList<Autor>();
		}
	}
	
	private static void gravarArquivosBinarios() {
		 GravaArquivoSerializado(dvdPath, listaDvd);
		 GravaArquivoSerializado(livroPath, listaLivro);
		 GravaArquivoSerializado(socioPath, listaSocio);
		 GravaArquivoSerializado(autorPath, listaAutor);
	}
	
	public static void addDvd(Dvd dvd){
		listaDvd.add(dvd);
	}
	
	public static void addLivro(Livro livro){
		listaLivro.add(livro);
	}
	public static void addSocio(Socio socio){
		listaSocio.add(socio);
	}
	public static void addAutor(Autor autor){
		listaAutor.add(autor);
	}
	
	public static List<Dvd> getListaDvd() {
		return listaDvd;
	}

	public static void setListaDvd(List<Dvd> listaDvd) {
		Main.listaDvd = (ArrayList<Dvd>) listaDvd;
	}

	public static List<Livro> getListaLivro() {
		return listaLivro;
	}

	public static void setListaLivro(List<Livro> listaLivro) {
		Main.listaLivro = (ArrayList<Livro>) listaLivro;
	}

	public static List<Socio> getListaSocio() {
		return listaSocio;
	}

	public static void setListaSocio(List<Socio> listaSocio) {
		Main.listaSocio = (ArrayList<Socio>) listaSocio;
	}

	public static List<Autor> getListaAutor() {
		return listaAutor;
	}

	public static void setListaAutor(List<Autor> listaAutor) {
		Main.listaAutor = (ArrayList<Autor>) listaAutor;
	}
	public static List LerArquivoSerializado(String path, List<?> lista){
		try {
			FileInputStream arq = new FileInputStream(path);
			ObjectInputStream ois = new ObjectInputStream(arq);
			lista = (List<?>) ois.readObject();
			ois.close();
			arq.close();
			return lista;
		}
		catch (Exception e){
			e.printStackTrace();
		}

		
		return null;	
	
	}
	public static void GravaArquivoSerializado (String path, List<?> lista){
		try {
			FileOutputStream arq = new FileOutputStream(path);
			ObjectOutputStream oos = new ObjectOutputStream (arq);
			oos.writeObject(lista);
			oos.flush();
			oos.close();
			arq.flush();
			arq.close();
			System.out.println("Arquivo gravado com sucesso! "+path);
		}
		catch (Exception e){
			e.printStackTrace();
			}
		
		}
		

}

1 Resposta

G

Dei uma olhada rapido e me confundi um pouco.

Vc postou duas vezes a mesma classe (Main), nao? Voce esta chamado Menu.main(args) por qual motivo?
onde esta a classe Menu? da uma lida mais a fundo sobre o metodo main em Java e como executa-lo, acho
que “Menu.main(args)” nao faz muito sentido pro que voce quer fazer.

Espero ter ajudado.

Criado 30 de junho de 2012
Ultima resposta 1 de jul. de 2012
Respostas 1
Participantes 2