File

E ae galera blz…

É o seguinte to usando um arquivo txt como um bd, e dentro de um arquivo tera o nome de um user + ou - assim:

gabriel;lima;adm

O programa vai ler e entender que o cliente é gabriel a senha é lima e que ele é administrador, quando eu criar um novo user ele vai adcionar uma linha identica a essa so que com os dados do novo user, porem quando eu tiver q excluir o usuario eu terei que apagar essa linha.

Estou usando o RandomAccessFile para fazer isso, e gostaria de saber se alguem ae sabe como eu posso apagar a lina inteira uma determinada, sem apagar o resto??!!

Vlw…

tenta pegar os textos do arquivo colocando ele dentro de uma String(ou StringBuffer) ae tu da um split nele nas quebras de linha se eu nao me engano eh com o \n .
Dae tu vai tratando linha a linha e tira aque tu quer :smiley:

acho que deve dar certo !!!

[quote=“sudeval”]tenta pegar os textos do arquivo colocando ele dentro de uma String(ou StringBuffer) ae tu da um split nele nas quebras de linha se eu nao me engano eh com o \n .
Dae tu vai tratando linha a linha e tira aque tu quer :smiley:

acho que deve dar certo !!![/quote]

amigo eu havia pençado na mesma coisa e eu teria q apagar o arquivo antigo e criar um novo com o mesmo nome com o conteudo da string, o problema é como tratar essa string por lina (tudo bem usando \n como argumento no split) a nivel de apaga-la???

E isso não consumiria muita memoria se tivesse um arquivo muto grande não??? Pergunto isso pq vou ter nesse mesmo sistema uns arquivos de txt grandes.

Obrigado pela ajuda!!! :grin:

Ola,

Bom, pelo que vi vc so quer guardar um arquivo com informacoes de usuarios… por que vc nao faz isto num Map, tipo, vc criaria uma classe User, com os atributos userName, passwd, cargo, no Map vc popula pelo userName, se este for unico no sistema, e para a persistencia vc serializa o Map num arquivo… em aconselharia vc a usar a interface java.io.Externalizable na classe User, segue os exemplos:

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

public class User implements Externalizable{
  static final long serialVersionUID = 1L;

  private String userName;
  private String passwd;
  private String cargo;

 ... /*implementação dos gets/sets e construtores, lembrando que a classe tem que ter um construtor padrão*/

  public void writeExternal(ObjectOutput out) throws IOException {
    //lembrar que na hora de escrever nenhum dos atributos podem estar nulos...
    out.writeUTF(this.userName);
    out.writeUTF(this.passwd);
    out.writeUTF(this.cargo);
  }

  public void readExternal(ObjectInput in) throws IOException, 
		ClassNotFoundException {
    this.userName = in.readUTF();
    this.passwd = in.readUTF();
    this.cargo = in.readUTF();
  }
}

Bom, este exemplo e para a classe de User, o Map vc pode usar o java.util.HashMap.

Em relação ao carregamento em memoria… acho que ate umas 1000 usuarios vc não tera um problema muito sério… mas vc pode ver +/- quanto de memoria esta sendo gasto pelo tamanho do Map persistido… não é exato, mas sá uma idéia de como ele fica na memoria…

Valeu, espero ter ajudado…