лучший способ хранить данные в Java как рассол - PullRequest
0 голосов
/ 29 февраля 2020

По сути, я просто хочу сохранить два целых числа в файл, чтобы я мог использовать их в следующий раз при запуске программы. Я хотел бы сделать это как pickle в python, потому что писать его просто в текстовый файл громоздко. Я читал некоторые статьи и другие вопросы, где, по их словам, я должен использовать Java serializatio или XML или JSON, но я не уверен, что в моем случае это правильно. Я хотел бы использовать самый простой способ. заранее большое спасибо за попытку решить мою проблему! <3 </p>

1 Ответ

1 голос
/ 29 февраля 2020

Вы можете использовать сериализацию, XML или JSON (обычно с дополнительными библиотеками). Простой способ сохранить данные конфигурации в файлах - использовать файлы свойств Java, которые поддерживаются JRE без каких-либо дополнительных зависимостей. Файлы свойств являются текстовыми файлами и имеют простой синтаксис key=value, см. Ниже. Чтобы записать два значения в файл свойств, вы можете сделать

  String prop1 = "foo";
  String prop2 = "bar";

  try (OutputStream output = new FileOutputStream("config.properties")) {

      Properties prop = new Properties();

      // set the properties value
      prop.setProperty("prop1", prop1);
      prop.setProperty("prop2", prop2);

      // save properties to project root folder
      prop.store(output, "my app's config file");
  } catch (IOException io) {
      io.printStackTrace();
      // TODO: improve error handling
  }

, что должно дать вам что-то вроде

#my app's config file
#Sat Feb 29 12:29:27 CET 2020
prop2=bar
prop1=foo

И загрузить его:

try (InputStream input = new FileInputStream("config.properties")) {

Properties prop = new Properties();

// load a properties file
prop.load(input);

// get the property value and print it out
String prop1 = prop.getProperty("prop1");
String prop2 = prop.getProperty("prop2");

System.out.println("prop1 = " + prop1);
System.out.println("prop2 = " + prop2);

} catch (IOException ex) {
  ex.printStackTrace();
  // TODO: improve error handling
}

Для целочисленные значения, вам понадобится преобразование некоторых типов, например, первые две строки будут

String prop1 = Integer.toString(23);
String prop2 = Integer.toString(42);

, а чтение свойств затем станет

int prop1 = Integer.parseInt(prop.getProperty("prop1"));
int prop2 = Integer.parseInt(prop.getProperty("prop2"));

. Это решение плохо масштабируется в случае, если число свойств увеличивается или происходят частые изменения. Более общую процедуру c смотрите в этом посте: Получить int, float, boolean и string из Properties

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...