Ir ao conteúdo
  • Cadastre-se

Java Preciso salvar uma ArrayList dentro de um arquivo txt


Posts recomendados

Estou fazendo uma Agenda telefonica, e preciso abrir um arquivo de texto para salvar um Arraylist dentro e poder modificar ele também. Estou usando a classe executavel AgendaTelefonica: 

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package agendatelefonica;

/**
 *
 * @author gubec
 */
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author gubec
 */
public class AgendaTelefonica extends Contato{

    static ArrayList<Contato> listaContato;
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int menuPrograma = 10;

        listaContato = new ArrayList<>();
        
        while(menuPrograma != 0){
            System.out.println("MENU");
            System.out.println("1- Incluir novos nomes e telefones");
            System.out.println("2- Consultar nomes existentes");
            System.out.println("3- Atualizar os dados de um contato já existente");
            System.out.println("4- Remover contato");
            System.out.println("0- Sair da aplicação\n");
            menuPrograma = input.nextInt();            
            if (menuPrograma == 1) {
                Scanner contato;
                Contato c = new Contato();
                
                System.out.println("Nome do contato: ");
                contato = new Scanner(System.in);
                c.setNome(contato.nextLine());

                System.out.println("Telefone  do contato: ");
                contato = new Scanner(System.in);
                c.setTelefone(contato.nextInt());

                
                InserirContato(c);
            } else if (menuPrograma == 2) {
                Contato c = new Contato();
                System.out.println("Informe o nome que deseja buscar: ");
                Scanner contato = new Scanner(System.in);
                c.BuscarContato(contato.nextLine());
            } else if (menuPrograma == 3) {
                Scanner contato;
                Contato c = new Contato();
                
                System.out.println("Nome do contato: ");
                contato = new Scanner(System.in);
                c.setNome(contato.nextLine());
                
                BuscarContato(c.getNome());
                
                for (Contato todos : listaContato){
                    if (todos.getNome().toUpperCase().equals(c.getNome().toUpperCase())){
                        System.out.println("Novo nome do contato: ");
                        contato = new Scanner(System.in);
                        c.setNome(contato.nextLine());
                        
                        System.out.println("Novo telefone  do contato: ");
                        contato = new Scanner(System.in);
                        c.setTelefone(contato.nextInt());
                        c.AtualizarContato(c);
                        System.out.println("Contato atualizado com sucesso.");
                    }
                }
            } else if (menuPrograma == 4) {
                Scanner contato;
                Contato c = new Contato();
                
                System.out.println("Nome do contato: ");
                contato = new Scanner(System.in);
                c.setNome(contato.nextLine());
                
                BuscarContato(c.getNome());
                
                for (Contato todos : listaContato){
                    if (todos.getNome().toUpperCase().equals(c.getNome().toUpperCase())){
                        c.RemoverContato(c);
                                
                    }
                }
            } else if (menuPrograma == 0) {
             System.exit(0);                       
            }
        }
    }
    
}

E uma classe com o metodos executaveis: 

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package agendatelefonica;

import static agendatelefonica.AgendaTelefonica.listaContato;
import java.util.ArrayList;

/**
 *
 * @author gubec
 */
public class Contato {
    private String nome;
    private int telefone;

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }  

    public int getTelefone() {
        return telefone;
    }

    public void setTelefone(int telefone) {
        this.telefone = telefone;
    }
    static void InserirContato(Contato c) {
        listaContato.add(c);
        System.out.println("Contato adicionado com sucesso");
    }
    static void BuscarContato(String nome) {
        int posicao = 0;
        boolean encontrado = false;
        for (Contato c : listaContato){
            posicao++;
            if (c.getNome().toUpperCase().equals(nome.toUpperCase())){
                encontrado = true;
                System.out.println("Contato encontrado na posição "+posicao+" da lista de contatos");
                System.out.println("Nome: "+c.getNome());

                System.out.println("Telefone : "+c.getTelefone());

            }
        }
        if(!encontrado){
            System.out.println("Nenhum contato encontrado com o nome '"+nome+"'");
        }
    }

    private static void ExibirNomeContatos() {
        int posicao = 0;
        for (Contato c : listaContato){
            posicao++;
            System.out.println(posicao+"\t"+c.getNome());
        }
    }

    static void AtualizarContato(Contato novo) {
        for (Contato c : listaContato){
            
                c.setNome(novo.getNome());
                c.setTelefone(novo.getTelefone());

           
        }
    }

    static void RemoverContato(Contato remover) {
        if(listaContato.size()==1){
            listaContato = new ArrayList<>();
        }else{
            for(int i = 0; i < listaContato.size(); i++){
                if (remover.getNome().equals(listaContato.get(i).getNome())){
                    listaContato.remove(i);
                }
            }
        }
        System.out.println("Contato removido com sucesso.");
    }

    

}

Como eu faço para ler e salvar a ArrayList dentro de um arquivo txt?

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...