VB.NET: сохранять и загружать данные? - PullRequest
0 голосов
/ 06 января 2011

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

Как сохранить словарь и другие переменные в одном файле, который может быть прочитан только самой моей программой?

Ответы [ 3 ]

2 голосов
/ 06 января 2011

Если вы ищете простое, у меня есть два слова для вас: двоичная сериализация .

Возможности сериализации, встроенные в .NET Framework, отлично подходят для таких задач, как эта, когда вы просто хотите выплеснуть некоторые данные экземпляра вашей программы на диск, не беспокоясь о том, чтобы написать кучу кода самостоятельно.

Поскольку вас не беспокоит соблюдение какого-либо открытого или стандартного формата данных, сериализация XML не дает никаких преимуществ. Просто выберите пользовательское расширение файла, которое будет использоваться для вашего приложения (желательно, которое еще не используется многими другими - помните, что вам не обязательно ограничивать себя только 3 символами), а затем свяжите это расширение с вашим приложением в оболочка Windows.

Конечно, это ничего не изменит для шифрования данных. Кто-то может открыть ваш файл данных в Блокноте и просмотреть его содержимое, но они не будут очень красивыми. Это не читаемый человеком формат данных, но и не обязательно безопасный. Ваш вопрос неоднозначен относительно того, требуется ли это или нет.

РЕДАКТИРОВАТЬ: Я вижу, вы добавили в комментарий, что вы хотели бы иметь возможность шифровать свои данные. Нет проблем. Принятый ответ на этот вопрос предлагает способ сделать это в сочетании с двоичной сериализацией: Как зашифровать и сохранить двоичный поток после сериализации и прочитать его обратно? По сути, вы захотите использовать CryptoStream класс для обработки шифрования / дешифрования.

1 голос
/ 06 января 2011

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

0 голосов
/ 06 января 2011

Если вы говорите только об относительно небольшом объеме данных, то, вероятно, легко просто сериализовать его в XML.См. http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.serialize.aspx

По сути, вы даете сериализатору объект, и он будет принимать все его свойства и что-то еще и преобразовывать их в XML.

Оттуда вы можете зашифровать его (см.http://www.codeproject.com/KB/security/SimpleEncryption.aspx) и запишите его в файл.

Будьте осторожны. Программы .NET легко разбираются, и ваш ключ шифрования может быть найден.

...