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.
[code]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();
}
}
}[/code]
Main
[code]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();
}
}
}
[/code]