можно ли сохранить прогресс в Java без внешних файлов?

#java #save

#java #Сохранить

Вопрос:

Я создаю Java-игру, которая требует сохранения прогресса. Но я не хочу, чтобы внешние файлы сохраняли прогресс (в некоторых играх, подобных minecraft, есть каталог «сохранить», в котором хранятся файлы). Итак, в основном я хочу, чтобы он хранил некоторые данные, которые могут быть извлечены при выходе пользователя и возвращении снова. Скажем, int называется num . Поэтому, когда пользователь завершает работу, а затем запускается снова, я хотел бы по-прежнему иметь номер int. Заранее спасибо.

Комментарии:

1. вам необходимо сохранить свое состояние, будь то файл или база данных

2. вы можете использовать реестр Windows, чтобы сохранить то же значение о состоянии вашей игры

3. Вы могли бы использовать API настроек. Это, очевидно, сохранит настройки где-нибудь на диске, но вам не придется об этом заботиться. docs.oracle.com/javase/7/docs/technotes/guides/preferences

4. Чтобы сохранить данные, вам нужно извлечь их из ОЗУ, Вы можете сделать это либо на локальный диск (в виде файла, в базе данных и т. Д.), Либо отправить его на удаленный компьютер (где он может хранить его в своей собственной оперативной памяти или на диске и т. Д.). Это ваши два варианта. Если вы исключаете локальный диск, то удаленный компьютер — ваш единственный вариант.

5. @samizahwan Это теоретически допустимо, но это нарушает природу Java, работающую в любом месте. Кроме того, реестр хранится в виде файла на диске, в определенной системной папке.

Ответ №1:

Вы не можете хранить данные, подобные тому, что вы говорите в Java; вы должны использовать внешний файл. Однако довольно легко скрыть указанный файл. Вы можете сохранить файл в appdata или в каталоге пользователя, который можно получить через System.getProperty("user.home") . Я также обычно начинаю имена каталогов своих игр с «.» (например C:/.../.minecraft/ ). Существуют также различные способы хранения этих данных. Я лично создал свою собственную систему NBT (именованных двоичных тегов), но я бы рекомендовал начать с простой построчной name = value системы в файле конфигурации.

Комментарии:

1. Хорошо, спасибо. Тогда я сохраню его, как minecraft, в appdata.

Ответ №2:

То, что вы просите, на самом деле невозможно.

Чтобы какие-либо данные из вашего приложения сохранялись, их нужно где-то хранить. Когда вы запускаете свою игру, она сохраняется в системной памяти, однако после закрытия игры эта память будет перераспределена ОС, чтобы ее можно было использовать другими программами.

Если вы хотите сохранять данные между сеансами, вам придется куда-то записывать в файл. Для быстрого способа сохранения и повторного поиска объектов взгляните на сериализуемый интерфейс (http://www.javapractices.com/topic/TopicAction.do?Id=57 ).

Ответ №3:

В дополнение к уже приведенным ответам / комментариям мы должны спросить, какова ваша цель.

Потому что, может быть, ваша цель в том, что вы не хотите, чтобы пользователь мог манипулировать этим целым числом?

Если это так, то вам следует сохранить целое число на вашем сервере.

Ответ №4:

Предположительно, вы можете сохранить свое постоянное состояние в «облаке». Который, вероятно, сохранит его где-нибудь на диске в любом случае. Но, по крайней мере, таким образом, это не на локальном диске.