[quote=thingol]Esquecendo do fato que CRUD é para ser feito com um banco de dados, não com um array de strings representando um arquivo-texto na memória, vamos lá.
O que você pode usar é um ArrayList<String> que é lido a partir de um arquivo-texto, usando a classe BufferedReader para ler o arquivo e BufferedWriter para escrevê-lo.
É mais fácil e mais eficiente usar um ArrayList<String> que um array, porque as operações (inserção, remoção, etc.) já estão certas e corrigidas em vez de você ter que fazer tudo na mão (e talvez fazer errado, o que é bastante provável).
Hoje mesmo postei um pseudo-código de como ler e gravar um arquivo-texto - procure por “SedTosco” aqui neste fórum.
[/quote]
Thingol, acho que algumas coisas eu pensei “a” e falei “b”.
Na verdade estou desenvolvendo o projeto da SCJD, estou usando RandomAcessFile.
usando getFile().readFully(), getFile().write() … etc
estou tendo alguns problemas, e o maior problema é que o erro ocorre aleatoriamente, as vezes ocorre, outra hora não, este erro é justamente na hora de escrever, eu passo os dados corretos, mas por algum detalhe ele elimina um dígito e bagunça todo meu file.db (mas isso sempre aleatoriamente, isso que é o maior problema, pois não consigo mapeá-lo)
Partindo desse erro, um amigo que fez a scjd a um tempo, falou que não usou diretamente o arquivo, ele carregou na memória e fazia as operações CRUD que foram requisitadas, e o SO cuidava de garantir os dados na memória ficassem sincronizados com o file.db
Acho que isso resolveria meu problema, meu que eu carregue num list, eu poderia usá-lo static pra ser um único fonte de dados, pois poderá ser acessado por vários clientes.
Mas e a questão da sincronização do list com o file.db? Imagine se eu vou guardando e o servidor desliga?
os dados do list não foram para o db e as operações não foram realizadas.
Digo isso, porque me lembro hoje da conversa com meu amigo, ele disse não ter se preocupado com essa questão de ler o arquivo, simplesmente deixou o SO fazer. Mas estou percendo um recurso assim tão automático, pelo menos nunca usei.