none
разборка файла RRS feed

  • Вопрос

  • Доброго времени, подскажите как начинающему програмисту.

    есть приложение в котором создаются объекты. При сохранении проекта: каждый объект должен уметь возвращать строку, в которой содержится имя объекта и пары свойство-значение, разделенных условным символом. при чтении из файла: из строки создается массив строк, их перебираем, когда встречается название объекта - создаем объект этого класса и в метод "считать файл" созданного объекта засовываем те строки которые идут после наименования объекта и до наименования следующего объекта.  а внутри  метода "считать файл" последовательно всемм свойствам присваеваем значения, которые содержатся в массиве строк.

    меня интересует:

     верно ли я мыслю, если хочу пока сохранять проекты в текстовые файлы своего формата?

    есть ли более еще что то более простого, чем это?

    и как чаще всего поступают: разрабатывают свой текстовый формат, свой двоичный формат или что то еще?

    31 октября 2013 г. 1:16

Ответы

  • "за"

    1. Вы не правильно понимаете. Все зависит от типа сериализации и атрибутов у свойств.

    2. В случае XML - да, в случае бинарных форматов - нет.

    "против"

    1. при бинарной сериализации объем не большой.

    2. без коментариев

    3. Угу, расскажите это разработчикам Microsoft Office, которые перешли на открытый формат, разработчикам Visual Studio - у которых все файлы являются текстовыми и т.д. и т.п.

    P.s. Готов поспорить, что вы не прочитали то, что было по ссылке. Ну или прочитали только то, что на первой странице, не перешли для подробного изучения на бинарную и XML сериализацию. От сюда и столько вопросов. Я могу при помощи атрибутов настроить свой класс так, что будут сериализоваться только 2 свойства из 100... А когда и вы прочитаете, то тоже сможете и убережете этот мир от еще одного велосипеда. Нет, если у вас учебная задача, то да, я за велосипеды, если же мы говорим о "создаю коммерческое приложение", то для изобретения велосипеда должно быть очень серьезное обоснование...

    • Помечено в качестве ответа MarBoris84 31 октября 2013 г. 10:46
    31 октября 2013 г. 7:57
    Отвечающий

Все ответы

  • Добрый день.

    То что вы описываете, называется сериализация. Так что, можете придумывать свою, а можете воспользоваться готовой XML или бинарной сериализацией, про которые можете почитать по ссылке.

    31 октября 2013 г. 6:15
    Отвечающий
  • проще конечно использовать готовую. а рациональность этого?

    "за"

    1. нет необходимости разрабатывать метод "сохранить" каждого объекта моего приложения. Я так понимаю, сериализовав объект верхнего уровня, все вложенные в него объекты тоже сериализуются

    2. доступность и понятность файлов моего приложения другим приложениям.

    "против"

    1. больший объем сохраненного файла. + я как разработчик для объектов, чьи свойства соответствуют записям локальной базы данных приложения, могу съэкономить сохраняя id этих записей и др. мелочи.

    2. в дальнейшем, научив объекты сохраняться, я могу перечти на двоичный формат.

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


    • Изменено MarBoris84 31 октября 2013 г. 7:24
    31 октября 2013 г. 7:22
  • "за"

    1. Вы не правильно понимаете. Все зависит от типа сериализации и атрибутов у свойств.

    2. В случае XML - да, в случае бинарных форматов - нет.

    "против"

    1. при бинарной сериализации объем не большой.

    2. без коментариев

    3. Угу, расскажите это разработчикам Microsoft Office, которые перешли на открытый формат, разработчикам Visual Studio - у которых все файлы являются текстовыми и т.д. и т.п.

    P.s. Готов поспорить, что вы не прочитали то, что было по ссылке. Ну или прочитали только то, что на первой странице, не перешли для подробного изучения на бинарную и XML сериализацию. От сюда и столько вопросов. Я могу при помощи атрибутов настроить свой класс так, что будут сериализоваться только 2 свойства из 100... А когда и вы прочитаете, то тоже сможете и убережете этот мир от еще одного велосипеда. Нет, если у вас учебная задача, то да, я за велосипеды, если же мы говорим о "создаю коммерческое приложение", то для изобретения велосипеда должно быть очень серьезное обоснование...

    • Помечено в качестве ответа MarBoris84 31 октября 2013 г. 10:46
    31 октября 2013 г. 7:57
    Отвечающий
  • "против"

    1. больший объем сохраненного файла. + я как разработчик для объектов, чьи свойства соответствуют записям локальной базы данных приложения, могу съэкономить сохраняя id этих записей и др. мелочи.

    2. в дальнейшем, научив объекты сохраняться, я могу перечти на двоичный формат.

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

    1. Можно использовать, например, GZipStream, DeflateStream - при этом сохраняемые данные будут сжиматься.

    2. При ручном сохранении придётся переписывать весь код. При автоматической сериализации - достаточно поменять один класс сериализатора на другой (замена одной строки кода).

    3. Смотрите пространство имён System.Security.Cryptography - в нём масса средств для шифрования данных. Например, можно использовать CryptoStream.

    31 октября 2013 г. 10:19