Fazer que o usuário insira novos dados em arquivo texto através de um menu

3 respostas
V

Olá a todos!

A dúvida é a seguinte: Quero chamar através de um menu, a execução de um método que está em outra classe para gravar novos dados em um arquivo texto.
Preciso de ajuda, pois vou ter uma prova da faculdade sobre manipulação de arquivos e vai ser mais ou menos assim a prova, através de um menu, o usuário escolhe as opções para manipular um determinado arquivo.
Seguem os códigos.

import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;

import javax.swing.JOptionPane;


public class EscreveArquivo {
	
	public void escreveArquivo(ArrayList<Pessoas> pessoas){
		try{
			FileWriter fw = new FileWriter("c:/arquivo/pessoas.txt", true);
			BufferedWriter bw = new BufferedWriter(fw);
				
			try{
				for  (Pessoas pessoa : pessoas){
					pessoa.setCodigo(Integer.parseInt(JOptionPane.showInputDialog("Informe o código:")));
					bw.write(pessoa.getCodigo());
					bw.newLine();
					pessoa.setNome(JOptionPane.showInputDialog("Informe o nome:"));
					bw.write(pessoa.getNome());
					bw.newLine();
				}
			
			} finally{
				bw.close();
			}
		} catch (FileNotFoundException ex){
			JOptionPane.showInputDialog(null, "arquivo não encontrado");
			
		} catch (IOException ex){
			JOptionPane.showInputDialog(null, "falha ao acessar o arquivo");
		}
	}
}


import javax.swing.JOptionPane;

public class menuCadList{
	
	public static void inclusao(){
		EscreveArquivo escreve = new EscreveArquivo();
		ArrayList<Pessoas> pessoas = escreve.escreveArquivo(pessoas);
	}
	
	public static void listar(){
		LeArquivoPessoas arq = new LeArquivoPessoas();
		ArrayList<String> pessoas = arq.ler();
		for(String pessoa : pessoas){
			System.out.println(pessoa);
		}
	}
	
	public static void imprime(){
		
	}
	
	public static void main(String a[]){
			int op=9;
			op = Integer.parseInt(JOptionPane.showInputDialog(
					"Menu: \n"+
					"1 - Inclusão \n"+
					"2 - Listar \n"+
					"3 - Imprime"));
			while ( op != 0){
				switch (op){
				case 1:
					inclusao();
				
				break;
				case 2:
					listar();
					
				break;
				case 3:
					imprime();
					
				break;
				}
				
			}
	}
}

3 Respostas

fabiocortolan

Mas qual sua dúvida?

V

A dúvida é como eu faço para chamar através do método inclusao() da classe menuCadList o método escreveArquivo(ArrayList pessoas) da classe EscreveArquivo. Porque do jeito que o código está escrito não está funcionando. O que eu queria é que o usuário entre com os dados e seja gravado no arquivo pessoas.txt.

fabiocortolan

O primeiro problema no seu caso é q o método “escreverArquivo()” não tem retorno e vc está atribuindo o “retorno” a uma variável, não vai funcionar:

ArrayList&lt;Pessoas&gt; pessoas = escreve.escreveArquivo(pessoas); // escreveArquivo(pessoas) não retorna nada

Se depois de consertar isso ainda estiver dando problema, poste o erro q está ocorrendo.

Criado 18 de abril de 2013
Ultima resposta 18 de abr. de 2013
Respostas 3
Participantes 2