No trabalho, preciso colocar o método para leitura de arquivo no início do método main e um de gravação ao final dele.
Porém estou com problemas, porque na primeira vez ainda não existe o arquivo, então dá erro no método de leitura.
E também não sei como não sobrescrever, sem perder os dados anteriores, na hora do encerramento do programa.
Segue a classe Interface, que contém o método main:
[code]package biblioteca.iterface;
import biblioteca.;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.ParseException;
import java.util.;
import java.lang.String;
/**
- Classe Interface (interação com o usuário)
- @author Jr Mendes
-
@version 1.0
*/
public class Interface {
/**
* @param args
* @throws ParseException
* @throws FileNotFoundException
* @throws IOException
* @throws ClassNotFoundException
*/
public static void main(String[] args) throws ParseException, FileNotFoundException, IOException, ClassNotFoundException {
boolean continuar=true;
Biblioteca biblioteca = new Biblioteca();
Scanner entrada = new Scanner(System.in);
biblioteca.lerDados();
do {
String s1,s2,s3,s4 = null;
GregorianCalendar gc = new GregorianCalendar();
System.out.println("");
System.out.println("");
System.out.println("O que deseja fazer? ");
System.out.println("");
System.out.println("1- Cadastrar Usuário");
System.out.println("2- Cadastrar Livro");
System.out.println("3- Cadastrar Empréstimo");
System.out.println("4- Inserir Novo Ítem Ao Empréstimo");
System.out.println("5- Excluir Usuário");
System.out.println("6- Excluir Livro");
System.out.println("7- Excluir Empréstimo");
System.out.println("8- Excluir Um Ítem De Um Empréstimo");
System.out.println("9- Devolver Todos Os Livros de Um Empréstimo");
System.out.println("10- Devolver Um Livro do Empréstimo");
System.out.println("11- Pesquisar Livros Por Título");
System.out.println("12- Pesquisar Livros Por Autor");
System.out.println("13- Listar Todos Os Usuários");
System.out.println("14- Listar Todos Os Livros");
System.out.println("15- Listar Todos Os Empréstimos e Seus Ítens");
System.out.println("0- Sair do Programa");
System.out.println("");
System.out.print("Digite sua opção: ");
/**
* Essa parte do código irá se certificar que a opção digitada pelo usuário
* seja um número e se certificará também da conversão da string para inteiro.
* O uso de nextInteger() não foi realizado, pois dava erro devido ao "lixo"
* capturado pelo método (pulava pra receber outra entrada sem receber a anterior)
*/
int temp = -1;
String s = entrada.nextLine();
if (!s.trim().isEmpty() && s.trim().matches("\\d+")) {
temp = Integer.parseInt(s.trim());
}
switch (temp) {
case 1: //===================================================
System.out.print("Digite o nome do usuário: ");
s1=entrada.nextLine();
System.out.print("Digite o CPF do usuário: ");
s2=entrada.nextLine();
System.out.print("Digite o endereço do usuário: ");
s3=entrada.nextLine();
System.out.print("Digite o telefone do usuário: ");
s4=entrada.nextLine();
Usuario usuario = new Usuario (s1,s2,s3,s4);
biblioteca.inserirUsuario(usuario);
System.out.print("Usuário adicionado!");
break;
case 2: //====================================================
System.out.print("Digite o código do livro: ");
s1=entrada.nextLine();
System.out.print("Digite a quantidade de exemplares do livro: ");
s2=entrada.nextLine();
System.out.print("Digite o título do livro: ");
s3=entrada.nextLine();
System.out.print("Digite o(s) autor(es) do livro: ");
s4=entrada.nextLine();
Livro livro = new Livro (Integer.parseInt(s1),Integer.parseInt(s2),s3,s4);
biblioteca.inserirLivro(livro);
System.out.print("Livro adicionado!");
break;
case 3: //====================================================
System.out.print("Digite o nome do usuário: ");
s1=entrada.nextLine();
System.out.print("Digite a data de devolução: ");
s2=entrada.nextLine();
Emprestimo emprestimo = new Emprestimo(biblioteca.pesquisaUsuario(s1),biblioteca.stringGC(s2));
biblioteca.inserirEmprestimo(emprestimo);
do{
s3=null;
System.out.print("Digite o título do livro que será emprestado: ");
s3=entrada.nextLine();
itemEmprestimo item = new itemEmprestimo(biblioteca.pesquisaLivro(s3));
biblioteca.inserirItemEmprestimo(emprestimo,item);
System.out.print("Ok!");
System.out.print("Deseja adicionar outro livro ao empréstimo? (s ou n): ");
s4=entrada.nextLine();
}while(s4.equals("s"));
break;
case 5: //====================================================
System.out.print("Digite o usuário do empréstimo correspondente: ");
s1=entrada.nextLine();
do{
s2=null;
System.out.print("Digite o título do livro que será emprestado: ");
s2=entrada.nextLine();
itemEmprestimo item = new itemEmprestimo(biblioteca.pesquisaLivro(s2));
biblioteca.inserirItemEmprestimo(biblioteca.pesquisaEmprestimo(s1),item);
System.out.print("Ok!");
System.out.print("Deseja adicionar outro livro ao empréstimo? (s ou n): ");
s4=entrada.nextLine();
}while(s4.equals("s"));
break;
case 6: //====================================================
System.out.print("Digite o nome do usuário: ");
s1=entrada.nextLine();
biblioteca.excluirUsuario(biblioteca.pesquisaUsuario(s1));
break;
case 7: //====================================================
System.out.print("Digite o título do livro: ");
s1=entrada.nextLine();
biblioteca.excluirLivro(biblioteca.pesquisaLivro(s1));
break;
case 8: //====================================================
System.out.print("Digite o nome do usuário do qual o empréstimo será excluído: ");
s1=entrada.nextLine();
biblioteca.excluirEmprestimo(biblioteca.pesquisaEmprestimo(s1));
break;
case 9: //====================================================
System.out.print("Digite o nome do usuário responsável pelo empréstimo: ");
s1=entrada.nextLine();
System.out.print("Digite o título do livro que deseja excluir do empréstimo: ");
s2=entrada.nextLine();
biblioteca.devolverItem(biblioteca.pesquisaEmprestimo(s1), biblioteca.pesquisaLivro(s2));
break;
case 10: //====================================================
System.out.print("Digite o nome do usuário responsável pelo empréstimo a ser devolvido: ");
s1=entrada.nextLine();
biblioteca.devolverTodosItensEmprestimo(biblioteca.pesquisaEmprestimo(s1));
case 11: //====================================================
System.out.print("Digite o nome do usuário responsável pelo empréstimo a ser devolvido: ");
s1=entrada.nextLine();
System.out.print("Digite o título do livro que deseja devolver do empréstimo: ");
s2=entrada.nextLine();
ArrayList<itemEmprestimo> itensEmp = biblioteca.pesquisaEmprestimo(s1).getItens();
for (int i=0;i<itensEmp.size()-1;i++){
if (biblioteca.pesquisaLivro(s2).equals(itensEmp.get(i).getLivro())){
biblioteca.devolverItem(biblioteca.pesquisaEmprestimo(s1),itensEmp.get(i).getLivro());
System.out.print("Livro " + itensEmp.get(i).getLivro().getTitulo() + " devolvido com sucesso!" );
}
}
case 12: //====================================================
System.out.print("Digite o título procurado: ");
s1=entrada.nextLine();
biblioteca.pesquisaTitulo(s1);
for (int i=0; i<biblioteca.pesquisaTitulo(s1).size()-1;i++){
System.out.println(biblioteca.pesquisaTitulo(s1).get(i).getTitulo());
}
case 13: //====================================================
System.out.print("Digite o autor procurado: ");
s1=entrada.nextLine();
for (int i=0; i<biblioteca.pesquisaAutor(s1).size()-1;i++){
System.out.println(biblioteca.pesquisaAutor(s1).get(i).getAutores());
}
case 14: //====================================================
for (int i=0; i<biblioteca.obterListaLivros().size()-1 ;i++){
System.out.println("Título: " + biblioteca.obterListaLivros().get(i).getTitulo());
System.out.println("Autor(es): " + biblioteca.obterListaLivros().get(i).getAutores());
System.out.println("Código: " + biblioteca.obterListaLivros().get(i).getCodLivro());
System.out.println("Quantidade de Exemplares: " + biblioteca.obterListaLivros().get(i).getQtdeExemplares());
}
case 15: //====================================================
for (int i=0; i<biblioteca.obterListaEmprestimos().size()-1 ;i++){
System.out.println("Emprésimo Número: " + biblioteca.obterListaEmprestimos().get(i).getNumero());
for (int j=0; j < biblioteca.obterListaEmprestimos().get(i).getItens().size()-1; j++){
System.out.println("Título: " + biblioteca.obterListaEmprestimos().get(i).getItens().get(j).getLivro().getTitulo());
System.out.println("Autor(es): " + biblioteca.obterListaEmprestimos().get(i).getItens().get(j).getLivro().getAutores());
System.out.println("Código: " + biblioteca.obterListaEmprestimos().get(i).getItens().get(j).getLivro().getCodLivro());
System.out.println("Quantidade de Exemplares: " + biblioteca.obterListaEmprestimos().get(i).getItens().get(j).getLivro().getQtdeExemplares());
}
}
case 0: //====================================================
System.out.println("");
System.out.println("Obrigado por utilizar o programa");
System.out.println("");
biblioteca.gravarDadados(biblioteca);
System.out.println("Dados gravados em arquivo");
continuar=false;
break;
default: //====================================================
System.out.println("Opção inválida.");
break;
}
}while(continuar);
}
}[/code]
Aqui os métodos de leitura e gravação:
[code] public void gravarDadados(Biblioteca biblioteca) throws FileNotFoundException, IOException{
ObjectOutputStream objetoOut = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(“Arquivo.obj”)));
objetoOut.writeObject(biblioteca);
objetoOut.close();
}
/**
- Método para ler os dados (objetos) de um arquivo
- @return (Biblioteca) objeto - (objeto lido, do tipo Biblioteca)
- @throws FileNotFoundException
- @throws IOException
-
@throws ClassNotFoundException
*/
public Biblioteca lerDados() throws FileNotFoundException, IOException, ClassNotFoundException{
ObjectInputStream objetoIn = new ObjectInputStream(new BufferedInputStream(new FileInputStream(“Arquivo.obj”)));
Biblioteca objeto = (Biblioteca)objetoIn.readObject();
objetoIn.close();
return (Biblioteca) objeto;
}[/code]