Pergunta

Qual é a melhor maneira de armazenar dados entre programa é executado em Java? Eu já sei que você pode usar um arquivo de texto e armazenar as informações de que maneira, mas eu queria saber se existe uma maneira melhor para armazenar a informação que é gerada pelo programa entre as execuções do programa.

Além disso, existe alguma maneira de fazê-lo de modo a manter a informação segura? Especificamente, eu quero manter o usuário final de ser capaz de acessá-lo.

Foi útil?

Solução

Eu queria saber se havia alguma maneira outros colocando a informação que é genereated pelo programa entre as execuções do programa?

Basta usar um ObjectOutputStream para serializar-lo em um arquivo e um ObjectInputStream para recuperá-lo.

Além disso, há alguma maneira de fazê-lo de modo para manter a informação segura? a partir de Ser capaz de acessar o usuário final ele?

Se o código é executado no sistema do usuário final, então não, não há nenhuma maneira de impedi-los de obter os dados - não é sequer vale a pena o seu tempo a tentar codificá-lo de alguma forma, já que é fácil de anexar um depurador e inspecionar os do programa estado enquanto ele está funcionando. Como um formato binário, serialização Java vai impedir que usuários não-técnicos de decifrá-lo, e isso é muito bonito o melhor que se pode esperar.

Outras dicas

Eu nunca usei-me, mas eu acho que é o do JDK java.util.prefs.Preferences foi originalmente projetado.

Você pode usar Propriedades para armazenar informações. Se você quiser torná-lo seguro, executá-lo através de algum tipo de fluxo de criptografia .

A criptografia em arquivos ou banco de dados local com senha.

Você pode usar db4o para armazenar os dados. É uma criptografia de banco de dados objeto e apoios.

Você pode estar interessado em Quick'n'dirty persistência de Java .

Algumas pessoas sugeriram usar serialização. Cuidado que há uma série de desvantagens para serialização.

  • O problema versionamento. Se você mudar alguma coisa nas classes que são serializados, arquivos, então serializados escritos com a versão antiga do seu programa não pode ser lido mais facilmente.
  • Você não sabe o formato exato do arquivo. Vai ser muito difícil se você quer escrever um programa diferente mais tarde, possivelmente em uma linguagem de programação diferente, que precisa ler o arquivo.

A serialização não é adequado para o armazenamento de longo prazo.

Gostaria de sugerir o uso de um pequeno banco de dados, incorporado em seu lugar. (Um banco de dados integrado é um banco de dados que é executado no mesmo processo que o seu programa). Note-se que Java da Sun inclui Java DB , que é uma versão do Apache Derby. Há também HSQLDB , que é um outro banco de dados pequeno e puro Java que pode ser usado como um banco de dados integrado.

A melhor coisa para usar quando começando Java é usar um arquivo de texto ObjectOutputStream ou. Uma vez que você tem mais experiência, então você pode usar bancos de dados.

Como cerca de serialização?

Pode não ser lido pelo usuário e é relativamente fácil.

Como já foi dito, há uma infinidade de maneiras de dados serialize. Você pode usar algo leve como SQLite ou apenas serialização simples. Basta perceber que qualquer tentativa de fazer para criptografar os dados podem ser derrotados, especialmente no caso de código Java, uma vez que pode ser facilmente revertida.

No entanto, se o volume de seus usuários são o suficiente para não técnico para compreender as complexidades de engenharia reversa de um programa Java para descobrir como para descriptografar os dados, você deve ser capaz de fugir com alguns métodos de criptografia básicas como o que foi mencionado em outra resposta e ser bom. Basta perceber que reside a qualquer hora qualquer coisa em uma máquina que você não controla, não há nenhuma maneira de manter os usuários mais persistentes de descobrir como quebrá-la.

Eu, pessoalmente, sugiro usar sqlite e usando algumas simples criptografia sobre os dados que você colocou nos campos por isso, se alguém é inteligente o suficiente para ser capaz de se conectar ao arquivo DB local, eles ainda têm de reverter o seu algoritmo de criptografia de alguma maneira . 99,9% dos usuários regulares não vão se preocupar com este nível de investigação.

XML como uma técnica de serialização é mais resistente a futuras mudanças em seu programa que irá ajustar o armazenamento do que os formatos binários, como serialização de objetos. No entanto, que tornaria muito legível e alterável pela maioria dos usuários.

A compactação muito simples / descompressão iria parar quase todos os usuários de entrar no conteúdo real dos dados. O uso de GZIPInputStream / GZIPOutputStream em torno de seu fluxo de escrita atual irá fazer o trabalho. Quanto mais elaborar a sua defesa contra curiosos você começa mais ele vai impactar os usuários do seu software.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top