#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:
Предположительно, вы можете сохранить свое постоянное состояние в «облаке». Который, вероятно, сохранит его где-нибудь на диске в любом случае. Но, по крайней мере, таким образом, это не на локальном диске.