Где сохранить данные приложения (конкретное лицо, не использующее своего права) на Linux

sprintf является подобным C способом сделать это, которое также работает в C++.

В C++, комбинация stringstream и потокового выходного форматирования (см. http://www.arachnoid.com/cpptutor/student3.html ) сделает задание.

41
задан William 2 October 2009 в 16:50
поделиться

7 ответов

Это зависит от того, какие данные вы планируете хранить. Этот ответ основан на предположении, что вы храните и изменяете данные во время выполнения.

Вопреки тому, что предлагали другие, я бы не рекомендовал использовать / usr / share для хранения. Из Стандарта иерархии файловой системы :

Иерархия / usr / share предназначена для всех независимая от архитектуры только для чтения файлы данных.

Поскольку вы изменяете данные, это противоречит природе подсистемы / usr только для чтения.

По-видимому, лучшим местом для хранения данных о состоянии вашего приложения было бы / var или, более конкретно, / var / lib . Это также происходит из Стандарта иерархии . Вы можете создать / var / lib / myapp , или, если вы также используете такие вещи, как файлы блокировки или журналы, вы можете использовать / var / lock или / var /log.

Посмотрите внимательнее на стандарт в целом (ссылка на него приведена выше) - вы можете найти место, которое еще лучше соответствует тому, что вы хотите сделать.

Например, Steve K , я бы также рекомендовал использовать Preferences API для данных о предпочтениях приложения.

62
ответ дан 27 November 2019 в 00:15
поделиться

Поскольку вы используете Java, смотрели ли вы на Preferences API ?

Из введения:

Приложениям требуются данные о предпочтениях и конфигурации для адаптации к потребностям различных пользователей и сред. Пакет java.util.prefs предоставляет приложениям способ хранения и извлечения данных о пользовательских и системных настройках и данных конфигурации. Данные постоянно хранятся в резервном хранилище, зависящем от реализации. Есть два отдельных дерева узлов предпочтений, одно для предпочтений пользователя и одно для предпочтений системы

Я бы позволил встроенному API выполнять работу.

7
ответ дан 27 November 2019 в 00:15
поделиться

Это зависит.

  • Глобальная конфигурация -> / etc / appname

  • Только для чтения , независимо от архитектуры машины -> / usr / share / appname

  • Только чтение, зависит от машины -> / usr / lib / appname

  • Чтение-запись -> / var / lib / appname

Нет гарантии для полноту, пожалуйста, проверьте Стандарт иерархии файловой системы .

37
ответ дан 27 November 2019 в 00:15
поделиться

В папках / usr / share или / usr / local / share

3
ответ дан 27 November 2019 в 00:15
поделиться

The freedesktop.org (previously known as the X Desktop Group) project has defined some standards for this in the XDG Base Directory Specification.

In your case, I'd have a look at $XDG_DATA_DIRS:

$XDG_DATA_DIRS defines the preference-ordered set of base directories to search for data files in addition to the $XDG_DATA_HOME base directory. The directories in $XDG_DATA_DIRS should be seperated with a colon ':'.

If $XDG_DATA_DIRS is either not set or empty, a value equal to /usr/local/share/:/usr/share/ should be used.

I warmly suggest to read the XDG Base Directory Specification.

6
ответ дан 27 November 2019 в 00:15
поделиться

Если он не зависит от пользователя, вы, вероятно, можете сохранить его в / usr / share / appname

1
ответ дан 27 November 2019 в 00:15
поделиться

Вы хотите, чтобы это было жестко закодировано? Вы можете использовать System.getProperty ("user.home"), чтобы вернуть пользователей домой, чтобы он больше не зависел от платформы.

-1
ответ дан 27 November 2019 в 00:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: