Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
10 / 10 / 2
Регистрация: 09.08.2010
Сообщений: 321
1

Программа, разбирающая файл определенного формата

10.08.2012, 12:47. Показов 1917. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, как написать программу, которая бы разбирала файла некоторого формата, например .dat? Этот файл состоит из полей и значений этих полей. Например:
Код
<field1> <value1> 
<fieldN> <valueN>
Что нужно делать, чтобы данные из файла были преобразованы в понятный, доступный для редактирования вид? То есть, чтобы их можно было не только читать, но и перезаписывать.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2012, 12:47
Ответы с готовыми решениями:

Программа для поиска и удаления файлов определенного формата
Доброго времени суток, столкнулся с задачей на работе, не срочной и немного не моего профиля но...

Стандартная программа для октрытия определенного формата файлов
Можно делать чтоб примеру виндоуским explorere открыл свойству файл с расширением скажем *.xxx...

Json определенного формата
Здравствуйте. Возникла такая проблема. Нужно, чтобы мой контроллер отправлял в ответ на запрос json...

Учебник C++ определенного формата
Здравствуйте. Искать по всем возможным учебникам методом перебора не хватит времени (слишком много...

9
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
10.08.2012, 12:54 2
Уже есть такой файл, который ты хочешь разобрать и отредактировать или хочешь создать свой формат хранения данных? Или что?

Добавлено через 1 минуту
Цитата Сообщение от William Blake Посмотреть сообщение
например .dat?
.dat это просто 3 буквы, по факту 2 файла с расширением .dat могут быть совершенно разной структуры. Можно текстовый файл сохранить с раширением .dat
0
10 / 10 / 2
Регистрация: 09.08.2010
Сообщений: 321
10.08.2012, 13:13  [ТС] 3
Уже есть такой формат, является хранилищем текста полей для приложения на Lua.
0
47 / 47 / 9
Регистрация: 13.02.2012
Сообщений: 176
10.08.2012, 13:30 4
Как тебе уже написали .dat это всего лишь расширение файла. Лежать там может все что угодно. Допустим ты хранишь там 2 строки в формате
ключ : значение
: это разделитель, тогда можно добавить содержимое этого файла в коллекцию
C#
1
2
3
4
5
6
7
8
            StreamReader reader = new StreamReader("filename");
            Dictionary<string, string> dict = new Dictionary<string, string>();
            while (!reader.EndOfStream)
            {
                string str = reader.ReadLine();
                string[] keyValueStr = str.Split(':');
                dict.Add(keyValueStr[0], keyValueStr[1]);
            }
Конечно, нужно добавить всяких проверок, но общий смысл думаю должен быть понятен.
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
10.08.2012, 14:02 5
Цитата Сообщение от William Blake Посмотреть сообщение
Уже есть такой формат, является хранилищем текста полей для приложения на Lua.
Скинь пример одного такого файла, если он огромен, то вырежи из него часть данных, но сохрани рабочую структуру, а тут посмотрим как его можно распарсить.

Добавлено через 4 минуты
Сохранить рабочую структуру, это примерно, как в XML из этого:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSomething xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Something>
    <FontMsg>
      <CurrentFontFamilyName>Tahoma</CurrentFontFamilyName>
      <FontSize>14</FontSize>
      <TextRenderMode>ClearType</TextRenderMode>
      <TextFormatMode>Display</TextFormatMode>
      <serialableFontWeight>Normal</serialableFontWeight>
      <serializableFontStyle>Normal</serializableFontStyle>
    </FontMsg>
  </Something>
  <Something>
    <FontMsg>
      <CurrentFontFamilyName>Tahoma</CurrentFontFamilyName>
      <FontSize>14</FontSize>
      <TextRenderMode>ClearType</TextRenderMode>
      <TextFormatMode>Display</TextFormatMode>
      <serialableFontWeight>Normal</serialableFontWeight>
      <serializableFontStyle>Normal</serializableFontStyle>
    </FontMsg>
  </Something>
  <Something>
    <FontMsg>
      <CurrentFontFamilyName>Tahoma</CurrentFontFamilyName>
      <FontSize>14</FontSize>
      <TextRenderMode>ClearType</TextRenderMode>
      <TextFormatMode>Display</TextFormatMode>
      <serialableFontWeight>Normal</serialableFontWeight>
      <serializableFontStyle>Normal</serializableFontStyle>
    </FontMsg>
  </Something>
</ArrayOfSomething>
Сделать это:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfSomething xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Something>
    <FontMsg>
      <CurrentFontFamilyName>Tahoma</CurrentFontFamilyName>
      <FontSize>14</FontSize>
      <TextRenderMode>ClearType</TextRenderMode>
      <TextFormatMode>Display</TextFormatMode>
      <serialableFontWeight>Normal</serialableFontWeight>
      <serializableFontStyle>Normal</serializableFontStyle>
    </FontMsg>
  </Something>
</ArrayOfSomething>
То есть вырезать повторяющиеся блоки (пусть и разные), нам ведь нужен сам парсинг, а не сами данные.
0
10 / 10 / 2
Регистрация: 09.08.2010
Сообщений: 321
10.08.2012, 16:09  [ТС] 6
Вот сам файл.
Вложения
Тип файла: rar CrE.rar (8.0 Кб, 19 просмотров)
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
10.08.2012, 16:29 7
А известно что из себя представляют данные в этом файле? Это не текст, хотя я так подумал читая первое сообщение в этой теме.Если не знать как его записывали, то думаю и не прочитать его, хотя может тут кто-то лучше разбирается и что-то подскажет.
0
10 / 10 / 2
Регистрация: 09.08.2010
Сообщений: 321
10.08.2012, 16:46  [ТС] 8
Я наткнулся на редактор для таких файлов, но он мне не нравится, мало функционала. И пришло в голову спросить, как можно написать свой.
Вложения
Тип файла: rar dateditor.rar (31.3 Кб, 25 просмотров)
0
10 / 10 / 2
Регистрация: 09.08.2010
Сообщений: 321
11.08.2012, 01:05  [ТС] 9
Есть какие-нибудь мысли?
0
Почетный модератор
Эксперт .NET
8721 / 3673 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
11.08.2012, 03:24 10
William Blake, пробуйте, Ваш файл распарсил.

Структура файла:
Код
/* Обозначения
 * > HEADER - заголовок файла
 *   Длина заголовка - 4 байта, содержит количество элементов в файле (ITEMS_COUNT)
 * > ITEM_TAGS - свойства одной записи вида NAME:TEXT
 *   Смещение   |   Длина
 *      0x0     |    0x4    - CRC32 поля NAME (CRC берется от текста в верхнем регистре)
 *      0x4     |    0x4    - длина поля TEXT в символах, текст закодирован в Unicode (2 байта на символ)
 *      0x8     |    0x4    - длина поля NAME в символах, текст в ANSI (1 байт на символ) 
*/

Структура файла:
HEADER
Дальше идет список ITEM_TAGS, его длина ITEMS_COUNT * ITEM_TAGS
Дальше идёт список из значений поля TEXT (друг за другом, по порядку)
Дальше идёт список из значений поля NAME (друг за другом, по порядку)
reader в аттаче.
Вложения
Тип файла: rar WindowsFormsApplication6.rar (10.8 Кб, 27 просмотров)
2
11.08.2012, 03:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2012, 03:24
Помогаю со студенческими работами здесь

Программа которая читает .тхт и меняет номер после определённого словосочетания, сохраняет файл
У меня очень большой текст и среди текста нужно найти номер он будет от 0,01 до 1000,99 пример ...

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

Получить подстроку определенного формата
Что добавить в функцию, чтобы из строки &quot;попсрачопспорс №042/6868 лрмлр&quot;, &quot;попсрачопспорс...

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru