Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.53/40: Рейтинг темы: голосов - 40, средняя оценка - 4.53
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273

Как сохранить файл настроек в отдельный свой файл?

31.05.2018, 09:38. Показов 8934. Ответов 87

Студворк — интернет-сервис помощи студентам
Никто не подскажет как сохранить файл настроек Settings в отдельный файл?
Есть идея сохранять профильные настройки в разные файлы а не плодить кучу секций в изначальном файле.
При этом перерыл гугл - есть только примеры сохранения и загрузки настроек а также работа с xml файлами.
Трудность в том что файл настроек имеет произвольную структуру которая зависит от пользователя...
Пример сохранения...
C#
1
 Properties.Settings.Default.Save();
Пример сохранения простого xml файла...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 XmlSerializer ser = new XmlSerializer(typeof(List<Чего то там>));
 
                                    XmlWriterSettings settings = new XmlWriterSettings();
 
                                    settings.Indent = true;
 
                                    settings.IndentChars = "\t";
 
                                    settings.ConformanceLevel = ConformanceLevel.Auto;
 
                                    XmlWriter writer = XmlWriter.Create(path, settings);
 
                                    ser.Serialize(writer, List<Чего то там>);
 
                                    writer.Close();
 
                                    refView.Close();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2018, 09:38
Ответы с готовыми решениями:

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

Как сохранить фон inkCanvas в файл
Как сохранить фон inkCanvas в файл?

Как данные из TextBox сохранить в файл
как данные из textbox сохранить в файл?

87
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
04.06.2018, 14:35  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от novikov.ea Посмотреть сообщение
Полностью поддерживаю всё, что пишет Rius.
и я тоже поддерживаю

Добавлено через 1 минуту
только в вашем коде не работает строка из поста 36 что делает его неудобным и неприменимым.

Добавлено через 2 минуты
класс этот недоопределенный и не наследуемый поэтому свой такой же написать нельзя.
Надо что-то изобретать.

Добавлено через 55 секунд
в изначальной задаче есть слово - файл настроек что очень сильно меняет просто задачу сохранения/записи файла.
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
04.06.2018, 14:52
Цитата Сообщение от Duzekrutov Посмотреть сообщение
Добавлено через 1 минуту
только в вашем коде не работает строка из поста 36 что делает его неудобным и неприменимым
Ну, мы с вами вроде определились, что я просто опечатался, и речь шла о методе SerializeObject.
Цитата Сообщение от Duzekrutov Посмотреть сообщение
класс этот недоопределенный и не наследуемый поэтому свой такой же написать нельзя.
Надо что-то изобретать.
А в чём смысл обязательно использовать internal класс Settings? Сделайте проще
C#
1
2
3
4
5
6
7
//Класс настроек
public class AppSettings
{
  public bool Setting1 { get; set; }
  public int Setting2 { get; set; }
  public string Setting3 { get; set; }
}
C#
1
2
3
4
//Запись
MySettingsClass settings = new AppSettings();
string json = JsonConvert.SerializeObject(settings);
File.WriteAllText(filePath, json);
C#
1
2
3
//Чтение
var jsonFromFile = File.RealAllText(filePath);
var settings = JsonConvert.DeserializeObject<AppSettings>(jsonFromFile)
И не нужно никаких лишних мучений
2
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
04.06.2018, 15:19  [ТС]
Проблема в том что класс AppSettings закрыт на наследование и не определен до конца при обьявлении(partial)
поэтому его структуру нельзя скопировать в свой файл... метод DeserializeObject при десериализации к нему вызывает ошибку. На чтение он доступен на остальное нет... Свой класс писать - это вариант но структуру надо самому доделывать.
Так наверно и буду делать.
0
26 / 26 / 7
Регистрация: 27.06.2015
Сообщений: 188
05.06.2018, 01:05
Вот пока вы тут разглагольствуете, уже тыщу раз могли сохранить и считать настройки. Хоть с бинарного файла.
Я понять не могу в чем заключается проблема того что вы не можете записать данные с программы в файл. Если вы просто записать данные в любой формат файла не можете то вам до программирования еще далеко. Уже уйму советов дали. Вам все не нравится. Может за Вас всю программу написать?
0
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
06.06.2018, 11:03  [ТС]
Проблема заключается в том что класс Properties.Settings не сериализуется... И код ни с json ни с бинарными ни с чем не работает. Хотя файлы записываются и читаются ... Вот нашел такую же тему так и не решенную
Возникла ошибка при отражении типа \"WindowsFormsApplication1.Properties.Settings\"
а вы товарищ LEX38RUS после 3 ответов так ничего и не поняли... Зачем Вы в моей теме? ничего путного от Вас не услышал кроме троллинга.

Добавлено через 1 минуту
А вариант с json дает файл по 100 килобайт когда xml всего 6 килобайт.
0
Эксперт .NET
 Аватар для Rius
13824 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
06.06.2018, 11:05
Цитата Сообщение от Duzekrutov Посмотреть сообщение
А вариант с json дает файл по 100 килобайт когда xml всего 6 килобайт.
Какой файл? С настройками?
Смотря что вы туда пихаете.
0
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
06.06.2018, 11:14  [ТС]
Он вообще не сериализуется независимо от пихания! Скачайте пример.
0
Эксперт .NET
 Аватар для Rius
13824 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
06.06.2018, 11:21
Цитата Сообщение от Duzekrutov Посмотреть сообщение
Он вообще не сериализуется
Тогда про какие 100 КБ вы говорите?
Цитата Сообщение от Duzekrutov Посмотреть сообщение
Скачайте пример.
Откуда?
1
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
06.06.2018, 11:44  [ТС]
я дал ссылку с похожим примером там прикреплен пример. 100 килобайт смотрю размеры файлов. Изначального файла с настройками и созданного JSON файла.
0
26 / 26 / 7
Регистрация: 27.06.2015
Сообщений: 188
06.06.2018, 11:51
У меня как то все нормально сохраняется в xml и не парюсь.
В 2018 году вы так ужасно подсчитываете каждый килобайт занимаемый тем или иным файлом?
0
Эксперт .NET
 Аватар для novikov.ea
1857 / 1363 / 429
Регистрация: 10.06.2011
Сообщений: 2,136
06.06.2018, 11:57
Цитата Сообщение от Duzekrutov Посмотреть сообщение
Проблема заключается в том что класс Properties.Settings не сериализуется
Господин Duzekrutov, вам 3 человека пишут о том, чтобы вы не использовали Properties.Settings, раз вам нужно его сериализовывать/десериализовывать. Поэтому я могу сделать вывод, что вы на данный момент ничего не поняли. Если вам ну ООООООЧЕНЬ нужно использовать именно Properties.Settings, то копируйте значения из него в другой класс, сериализуйте/десериализуйте его и копируйте значения обратно в Properties.Settings.
Цитата Сообщение от Duzekrutov Посмотреть сообщение
А вариант с json дает файл по 100 килобайт когда xml всего 6 килобайт
У вас на машине стоит ограничение на 10 килобайт? Наверняка в Properties.Settings содержится всякая лабуда, которую вам не нужно хранить в файле. Если вы запишите в файл только нужную информацию, то он будет весить те же 6 килобайт.
3
26 / 26 / 7
Регистрация: 27.06.2015
Сообщений: 188
06.06.2018, 12:04
Этот господин видимо сам не понимает чего хочет.
Вот тут почитай. Может куча вопросов отпадет.


Добавлено через 3 минуты
Все данные так же можно записать и в любой файл
Создать класс где будут нужные свойства для настроек. Пару методов сохранить загрузить. При создании экземпляра считывайте файл с настройками и подставляйте считанные данные куда вам угодно. При сохранении или изминение переписывайте данные в файле. С PropertySettings еще все проще. Восемь раз читаю тему и вкурить не могу чего хочет человек.
0
Эксперт .NET
 Аватар для Rius
13824 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
06.06.2018, 12:18
Цитата Сообщение от Duzekrutov Посмотреть сообщение
я дал ссылку с похожим примером
Вам уже говорили не использовать готовый класс Settings, если хотите сохранять не так, как он делает.
Вот что в этом для вас непонятно?

Добавлено через 7 минут
Для лентяев в 37 посте ссылка на почти (internal class Options заменить на public class Options) готовый код, дающий такой файл:
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<Options xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FileName>D:\Projects\Desktop\Tests\ConsoleAppCustomSettings\ConsoleAppCustomSettings\bin\Debug\database.sqlite</FileName>
</Options>
Но вы настолько одарены, что даже не смотрели его.
0
26 / 26 / 7
Регистрация: 27.06.2015
Сообщений: 188
06.06.2018, 12:19
Я вообще не понимаю в чем проблема создать файл и писать туда что угодно. Просто надо как то мысленно представить что ли структуру файла и записывать туда. Так же написать как я и выше писал отдельный класс который будет задействован исключительно на сохранение и загрузке настроек. Это же все просто. Только я лично помогать не хочу а уж тем более писать. Так как человек с 85 раза не понимает ни чего. Смысл тратить время. Ему килобайты важней чем инфа которую он собрался хранить.
Сейчас игры по 80 гигов весят а он тут про 100 килобайт говорит много.
0
Эксперт .NET
 Аватар для Rius
13824 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
06.06.2018, 12:39
Цитата Сообщение от LEX38RUS Посмотреть сообщение
Я вообще не понимаю в чем проблема создать файл и писать туда что угодно.
Код структур данных может измениться, а код чтения/записи в файл вы можете забыть поменять. Поэтому сериализация удобнее. Там забывать нечего.

Добавлено через 17 минут
Ещё более удобна такая сериализация, которая позволяет считать данные из файла от прежней версии структуры в структуру новой версии. Что позволяет без проблем добавлять новые настройки, не прописывая код для поддержки старых версий.
2
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
06.06.2018, 12:45  [ТС]
Цитата Сообщение от Rius Посмотреть сообщение
Для лентяев в 37 посте ссылка на почти (internal class Options заменить на public class Options) готовый код, дающий такой файл:
это не работает! Это пребовалось сразу - эпитеты свои попридержи.
0
Эксперт .NET
 Аватар для Rius
13824 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
06.06.2018, 12:48
Цитата Сообщение от Duzekrutov Посмотреть сообщение
это не работает! Это пребовалось сразу
Я скопировал в чистый проект, собрал, запустил, всё работает. Файл сохранился, считался. Потому что не долблюсь, как идиот, пихая туда Settings.

Цитата Сообщение от Duzekrutov Посмотреть сообщение
ипитеты свои попридержи.
Что такое ипитеты?
0
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
06.06.2018, 12:49  [ТС]
Цитата Сообщение от LEX38RUS Посмотреть сообщение
Я вообще не понимаю в чем проблема создать файл и писать туда что угодно.
проблема в том что писать что угодно не надо! А структура settings меняется. Надо базировать класс с нее и его сериализировать и обратно... Иначе при каждом изменении структуры будешь снова и снова ковырять код... так никто не делает!

Добавлено через 1 минуту
Создавать другую структуру это тоже не решение это стопроцентный говнокод!
0
Эксперт .NET
 Аватар для Rius
13824 / 7896 / 1707
Регистрация: 25.05.2015
Сообщений: 23,964
Записей в блоге: 14
06.06.2018, 12:49
Цитата Сообщение от Duzekrutov Посмотреть сообщение
А структура settings меняется. Надо базировать класс с нее и его сериализировать и обратно
Надо юзать Settings? Сохраняйте его тем способом, что предложен Microsoft'ом. И всё, никаких проблем.

Цитата Сообщение от Duzekrutov Посмотреть сообщение
Иначе при каждом изменении структуры будешь снова и снова ковырять код... так никто не делает!
Именно так и делают. См. пост 55.
0
26 / 25 / 3
Регистрация: 22.01.2013
Сообщений: 273
06.06.2018, 12:50  [ТС]
Rius, говнокод не нужен и мысли говнокодные не нужны!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2018, 12:50

Как сохранить данные из dataset в файл?
Здравствуйте , подскажите пожалуйста как можно сохранить данные из DataGrid в файл ? (Извините там немного не правильно вопрос написал , а...

Как сохранить значение в файл на хостинге?
Возникла такая проблемка, в общем, есть хостинг, на нём лежит текстовый файл. Мне нужно в своей программе при нажатии на кнопку записать...

Как сохранить содержимое canvas в *.bmp файл
Подскажите, пожалуйста, как сохранить содержимое canvas в bmp файл? я понимаю, что для этого нужно получить Image c canvasа, но как?

Как сохранить xml файл без BOM?
Здравствуйте! Как сохранить xml файл в кодировке UTF-8 без BOM ?

Как правильно сохранить jpg файл из потока
Здравствуйте подскажите пожалуйста как правильно сохранить jpg из потока ( он скачивается по ссылке из интернета) Пишу так : public void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru