Salvar dados no registro com Java.
Em algumas aplicações pode ser necessário armazenar pequenos dados sobre as configurações desse programa, como por exemplo, o perfil de usuário com informações de idioma, tema utilizado, etc…
Uma das opções é armazenar estes pequenos valores no registro, utilizando o pacote java.util.prefs.Preferences. Preferences é uma classe abstrata que controla o fluxo de leitura de escrita no registro. O usuário não precisa se preocupar se seu sistema operacional for Windows, Linux ou Mac. A classe Preferences tem uma factory, na qual é responsável por gerenciar o sistema operacional em uso.
Já no Linux, por exemplo, será salvo em arquivos com o nome prefs.xml, dentro de subpastas ~/.java/.userPrefs. No exemplo que iremos ver mais abaixo, o endereço completo para o arquivo prefs.xml será : ~/.java/.userPrefs/dio/regedit/example.
O código para salvar os dados no registro é bem simples e pode ser visto logo abaixo:
package br.com.dio.bootcamp.registro;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;
public class SalvarDadosRegistro {
public static void main(String[] args) {
// Salvar os dados no registro.
try {
Preferences pref = Preferences.userRoot().node("dio/regedit/example");
pref.put("MyString", "Fulano Cicrano Beltrano");
pref.putBoolean("myBoolean", true);
pref.putInt("MyInt", 18);
pref.putDouble("MyDouble", 2000D);
pref.putByteArray("MyArray", "MyArray".getBytes());
pref.flush(); // <- importante realizar o save no registro.
} catch (BackingStoreException e) {
System.out.println("Falha ao tentar salvar no registro");
}
}
}
Depois que o objeto pref é instanciado, ele está apto a executar algumas funções para salvar os dados com os métodos iniciados por put. Existem puts para diversos tipos de dados, como por exemplo putBoolean para valores booleanos. Após todos os dados estiverem prontos para serem salvos, deverá utilizar o método flush(), para que de fato salve os dados "setados".
De forma semelhante, os métodos get são para obter os dados salvos no registro, deverá utilizar o método sync(), note que deverá inserir como parâmetro um valor padrão, para que, caso o valor não seja encontrado, o valor atribuído será o escolhido no parâmetro, por exemplo.
Abaixo temos o exemplo:
package br.com.dio.bootcamp.registro;
import java.util.Arrays;
import java.util.prefs.Preferences;
public class LerDadosRegistro {
public static void main(String[] args) {
// Recupera os dados salvos no registro.
Preferences pref1 = Preferences.userRoot().node("dio/regedit/example");
pref1.sync(); // <- importante realizar o sync ao ler o registro.
String myString = pref1.get("MyString", null);
boolean myBoolean = pref1.getBoolean("myBoolean", false);
int myInt = pref1.getInt("MyInt", 0);
double myDouble = pref1.getDouble("MyDouble", 0D);
byte[] myArray = pref1.getByteArray("MyArray", null);
System.out.println(myString);
System.out.println(myBoolean);
System.out.println(myInt);
System.out.println(myDouble);
System.out.println(Arrays.toString(myArray));
}
}
Espero ter ajudado.
Bons estudos!