Interação arquivo com vetor

:?

Minha dúvida eh a seguinte:

Como que eu faço para:
Eu gostaria de ler dados atraves de varios JTextField (Por exemplo: --> nome, senha, conta), e com esses dados eu colocar num vetor cada campo em cada celula do vetor, e dpois salvar esses dados em um arquivo (os meus arquivos quando eu escrevo estão sempre sobrepondo, como q eu faço pra naum sobrepor?) , teria q salvar kda campo em cada linha como no pascal , delphi? como q eu faço pra salvar blza? e dpois quando eu recomeçasse o programa eu pegaria o vetor e preencheria ele todo de novo com os dados q foram passados pra arquivo, como q eu faço?
como q eu faço?
se alguem tiver programa exemplo, por favor me passe, qualquer tipo de ajuda tah valendo, eh pra imprementar numa aplicacao q eu estou fazendo, e não sei trabalhar com arquivos e muito menos interagir arquivo com vetor em java…

Obrigado!

Heero.

vc pode salvar cada um em uma linha diferente, senao vai gravar tudo na linha 1 por exemplo e vai sobrepor os dados existentes…

acho que no seu caso o mais interessante seria gerar um arquivo XML.

aqui no guj vc encontra tanto tutoriais para trabalhar com XML e tutoriais pra mexer com arquivo texto normalmente

Olha eu mais um amigo lendo o tutorial e mexendo um pouco chegamos ao seguinte código:

import java.io.*;

class Conta implements Serializable {
	private int num;
	private String pNome, uNome;
	private double saldo;

	public Conta(
		int num, String pNome, String uNome, double saldo) {
			this.num = num;
			this.pNome = pNome;
			this.uNome = uNome;
			this.saldo = saldo;
	}

    public int numero()
     {
     	return num;
     } 	
        
     public void print() {
      System.out.println(num + ": " + pNome + " " + uNome +" -> saldo = " + saldo);
  }
}

classe principal

import java.io.*;

class DataIO {

	public static void main (String args []) throws
							java.io.IOException, java.lang.ClassNotFoundException  {
		
		Conta vect[] = new Conta[3];
		vect[0] = new Conta (1, "Caze", "Junior", 44.21);
		vect[1] = new Conta (2, "Anotonio", "Marinho", 31.15);
		vect[2] = new Conta (3, "Thiago", "bastos", 841.50);
		
		String fich = "contas.txt";
		
		//gravo
		ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fich));
		out.writeInt(vect.length);
		for (int i=0; i<vect.length; i++)  out.writeObject(vect[i]);
		out.close();
		
		//leio
		ObjectInputStream in = new ObjectInputStream( new FileInputStream(fich));
		Conta [] v = new Conta[in.readInt()];
		for (int i=0; i< v.length; i++) v[i] = (Conta) in.readObject();
		in.close();
		
		for (int i=0; i<v.length; i++) 
		{
		 if (v[i].numero()==1)
		 v[i].print();
        }   
		 
		System.in.read();
	}
}

Esse codigo funciona eh soh por pra rodar…

Por em tenho algumas dúvidas q permanecem q eu não consegui resolver…
sendo q eu to sempre sabendo tamanho do vetor, tem jeito de eu não saber quanto q vai ser o vetor? por q eu não sei quantos registros o usuario vai digitar? tem jeito de eu setar um tamanho (vetor) por exemplo 100 e o usuario digitar 3, e dpois gravar sair do programa e ele digitar a apartir da posicao 4??? como q eu faço isso?
esta sobrepondo como vcs irão perceber…
como q eu faço pra naum sobrepor? tbm levem em consideração o exemplo anterior…, como q eu faria pra todos as 3 celulas nao irem se sobrepondo…???

obrigado pela ajuda, e se possivel continuem me ajudando!!!

esse assunto eh muito interessante!!!

implementações, dicas a mais, serão sempre bem vindas!!!

Troca seu vetor por um ArrayList ( add/get )

Rafael

O que ele ganharia com isso, Rafael? Acho que eu não entendi as vantagens aqui… além de ArrayList ser parte da API de Collections, e o fato de não ser sincronizada, claro…

vetor != Vector

Se atualmente ele esta usando um array do tipo Conta, e deseja poder adicionar/remover facilmente, porque o ArrayList nao resolveria? Qual o problema de ser do Collections e nao sync?

Rafael

Putz, eu nao li o codigo e vim falar merda. Achava que ele tinha usado Vector, mas nem conferi o código… :oops: :oops: :oops:

Tudo bem Irmao, eu lhe perdoo… 50 moderacoes e estara livre deste pecado. :stuck_out_tongue:

Rafael