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?
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
vitor.savi
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
Bruno8moura
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
vitor.savi
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
Bruno8moura
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
Bruno8moura
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
vitor.savi
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
Bruno8moura
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.