С#.NET - метод для хранения информации о очень малых масштабах?
У меня есть приложение, которое потребует крайне мало постоянного хранения. Реально мы говорим о < 30 целых чисел. Все приложения должны знать эти целые числа при следующем запуске (и целые числа меняются по мере их запуска).
Для этого база данных слишком много, но я не хочу просто использовать текстовый файл.
Есть ли у С# какой-либо механизм для сохранения небольших значений, подобных этому между запусками? Я заметил, что вы можете хранить вещи в файлах ресурсов и в некоторых других местах - я не знаю, можете ли вы изменить их во время выполнения. Я просто изучаю С# и .NET для новой работы, поэтому извиняюсь, если это глупый вопрос!
Ответы
Ответ 1
Вот blurp другого сообщения SO, в котором объясняется, как настраивать параметры приложения, это простое решение для чтения/записи значений на основе файлов.
"Если вы работаете с Visual Studio, довольно легко получить устойчивые настройки. Щелкните правой кнопкой мыши по проекту в обозревателе решений, выберите" Свойства ". Выберите вкладку" Настройки ", нажмите гиперссылку, если настройки не существуют. Используйте вкладку" Параметры "для создания настроек приложения. Visual Studio создает файлы Settings.settings и Settings.Designer.settings, которые содержат параметры Singleton, унаследованные от ApplicationSettingsBase. Вы можете получить доступ к этому классу из своего кода для чтения/записи настройки приложения:"
Settings.Default["SomeProperty"] = "Some Value";
Settings.Default.Save(); // Saves settings in application configuration file
Ответ 2
Я бы использовал внедренную базу данных sqlite.
http://www.codeproject.com/Articles/22165/Using-SQLite-in-your-C-Application
SQLite - небольшая, быстрая и встраиваемая база данных, в которой механизм базы данных и интерфейс объединены в одну библиотеку. Он также имеет возможность хранить все данные в одном файле. Поэтому, если вашему приложению требуется отдельная база данных, SQLite, возможно, является идеальным выбором для вас. Разумеется, есть и другие причины выбора SQLite, включая:
SQLite имеет небольшой объем памяти, и для доступа к базам данных требуется только одна библиотека, что делает ее идеальной для встроенных приложений баз данных.
SQLite был перенесен на многие платформы и работает даже в Windows CE и Palm OS.
SQLite соответствует требованиям ACID, отвечающим всем четырем критериям: Atomicity, Consistency, Isolation и Durability.
SQLite реализует большое подмножество стандарта SQL ANSI-92, включая представления, подзапросы и триггеры.
Нет проблем с дополнительными драйверами баз данных, требуется настройка ODBC. Просто включите библиотеку и файл данных в приложение.
SQLite имеет API для родного языка для C/С++, PHP, Perl, Python, Tcl и т.д. Собственный API для С# по-прежнему отсутствует.
Ответ 3
Вы можете просто сериализовать список в XML файл. Вот как вы его сохраняете:
var xs = new System.Xml.Serialization.XmlSerializer(typeof(List<int>));
List<int> ints = new List<int> { 1, 2, 3 };
using (FileStream fs = new FileStream(@"C:\store.xml", FileMode.OpenOrCreate))
{
xs.Serialize(fs, ints);
}
И получить его так же легко:
using (FileStream fs = new FileStream(@"C:\store.xml", FileMode.OpenOrCreate))
{
ints = xs.Deserialize(fs) as List<int>;
}
Ответ 4
Я бы выбрал хранилище файлов и не использовал базу данных или реестр, как первый, который требуется для большей части фреймворка, а второй... о, хорошо, никогда не играй с реестром:)
используя XML в качестве хранилища файлов, это отличное чтение:
Как обрабатывать XML файлы?
вы можете создать свой файл, чтобы сохранить все ID в одном и том же node, или написать один идентификатор на node, это зависит от вас, что-то вроде этого будет хорошо:
<?xml version="1.0" encoding="utf-8" ?>
<settings>
<selected>
<id>1</id>
<id>8</id>
<id>12</id>
<id>15</id>
</selected>
</settings>
Чтобы создать такой файл:
XmlDocument doc = new XmlDocument();
XmlElement set = (XmlElement)doc.AppendChild(doc.CreateElement("settings"));
XmlElement sel = (XmlElement)set.AppendChild(doc.CreateElement("selected"));
int[] selectedIds = new int[] { 1, 2, 3, 4, 5 };
foreach (int id in selectedIds)
sel.AppendChild(doc.CreateElement("id")).InnerText = id.ToString();
string path = Path.GetDirectoryName(Application.ExecutablePath);
doc.Save(path + "/settings.xml");
Для чтения вы можете использовать XmlReader
, XmlTextReader
, XDocument
и т.д.
Ответ 5
Если вы используете С# 4.0 и выше, вам может понадобиться посмотреть новый Файлы с памятью.
Использование Persisted Memory Mapped files даст вам легкость файла, но скорость отображения в памяти. Конечно, вы все равно должны сами управлять форматом файла.
- Сохраненные файлы с отображением памяти
Персистентные файлы представляют собой файлы с отображением памяти, которые связаны с исходным файлом на диске. Когда последний процесс завершит работу с файлом, данные будут сохранены в исходный файл на диске. Эти файлы с отображением памяти подходят для работы с чрезвычайно большими исходными файлами.
Вероятно, это может быть излишним для 30 целых чисел, но это еще один вариант, особенно если скорость является ключевой.