Json

9 respostas
V

Eu tenho uma lista pra jogar cadastros dentro dela, e então a salvo dentro do txt: Estou fazendo assim:

O problema é que quando eu eu salvo os cadastros no txt, ele está criando uma lista nova pra cada um, como se ele duplicasse a lista anterior, com os novos valores, mas a lista anterior continua existindo no txt. E então, quando eu tento puxar a lista do txt e mostrar no console, ele puxa apenas a ultima lista colocada lá, pois todas tem o mesmo nome, então aparece apenas o ultimo cadastro feio. Como eu arrumo isso?

9 Respostas

B

Boa noite,

Não sei se entendi direito, me confirma se o cenário é esse…

A variável “arquivo” é um File com um arquivo txt em branco carregado?

Estou vendo que você está usando o construtor “FileWriter(File, boolean)”, isso se “arquivo” for mesmo um File.

Bom, segundo a documentação da Oracle, este construtor irá escrever no final do arquivo, caso você passe “true”, que é o que você está fazendo. Se for isso mesmo, é capaz de você está fazendo “somando” informação no arquivo.

Da um confere ai…

V

Isso mesmo. Eu tenho um file ‘arquivo’ definido lá no começo do código, que leva pra um cadastro txt. E sim, ele está somando uma lista a cada vez que eu executo o programa, mas eu preciso que ele junte tudo em uma lista só. Eu tentei mudar pra ‘false’, depois do arquivo, mas aí ele sobrescreve a lista que está no arquivo, pela ultima lista construida.

B

Tenta escrever no arquivo uma pessoa e não uma lista de pessoas. Porque como você está fazendo agora você está sempre salvando uma lista com um item, salve apenas o item.

V

Mas eu preciso que seja uma lista, porque são cadastro. Por exemplo “Nome, sobrenome, email, senha”, e imagine que vou salvar n cadastros. Preciso que cada vez que um cadastro seja criado, ele atualize a lista adicionando esse ultimo cadastro. Mas meu código está sobrescrevendo o ultimo cadastro pelo novo

B

Não grave como lista.

Gravando objeto a objeto, colocando o novo sempre ao final do arquivo fica mais fácil de trabalhar.

Essa lib lhe permite pegar os itens serializados no arquivo.

Tenta usar esse método aqui ó “(List)new JSONDeserializer().deserialize(writer, Produto.class)”

B

Se você usar lista, sempre que precisar adicionar um novo elemento a sua lista serializada, vc vai ter que carrega-la, deserializar, adicionar o item na lista, e depois serializa-la novamente sobrescrevendo o conteúdo do arquivo.

V

Pior que é bem isso que estou fazendo cara. kkkkkk mas não entendi como colocar o objeto no final, como vc disse ali em cima

B

Então, a linha “new FileWriter(“arquivo”, true);” faz isso para você.

Ele carrega o arquivo e quando você escreve nele, ele faz o “append” no final do arquivo.

E quando você precisar carregar o arquivo essa lib que você esta usando já lê fazendo o unmarshal, item a item no arquivo, de forma que você tem o objeto Produto pronto para usar.

V

Blz. Vlw mesmo cara

Criado 15 de abril de 2016
Ultima resposta 19 de abr. de 2016
Respostas 9
Participantes 2