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

Чтение файла и поиск нужного параметра

06.09.2015, 10:57. Показов 2175. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите как прочитать файл такой формы:

Code
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
34
35
36
37
"InstallConfigStore"
{
    "Software"
    {
        "Valve"
        {
            "Steam"
            {
                "Accounts"
                {
                    "name"
                    {
                        "SteamID"       "XXXXXXXXXXXX"
                    }
                }
                "CurrentCellID"     "ZZ"
                "CS"        "123123123123"
                "SentryFile"        "C:\\Program Files (x86)\\Steam\\ssfn2668945729809862374"
                "ConnectCache"
                {
                    "e6afb0b31"     "43fs4gfsdfdf"
                }
                "Rate"      "30000"
                "SurveyDate"        "2014-12-11"
                "NCTF"      "0"
                "BaseInstallFolder_1"       "D:\\SteamLibrary"
                "depots"
                {
                    "350356"
                    {
                        "DecryptionKey"     "089fb68dad0484b31152e79d45aa50d958783cdb9efb2f0e4476acc8cddc25ac"
                    }
                }
            }
        }
    }
}
Нужно получать значение параметров например: SentryFile и CS. Файлы типа ini еще понятно как читать.. а это нет.. заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2015, 10:57
Ответы с готовыми решениями:

Чтение параметра из файла
Приветствую. Подскажите по такому вопросу: Переменной proc.StartInfo.FileName требуется присвоить определенное значение (а именно путь к...

Парсинг файла и попарное чтение - параметра и его значения
Загружаю файл в string, строка в файле только одна, так что масив ненужен. В чем задача стоит? Содержимое файла такое: ...

Чтение нужного байта из массива байтов
Подскажите плиз, как считать определнный байт из массива, есть вот такой массив byte bytes2 = { 1, 3, 56, 78 }; Необходимо...

15
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.09.2015, 12:19
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
string[] text = File.ReadAllLines(@"D:\Folder\1.txt");
string SentryFile=null, CS=null;
char[] separator={' ', '\"'};
foreach (string line in text)
{
    string[] words = line.Split(separator, StringSplitOptions.RemoveEmptyEntries);
    if (words.Length > 1)
    {
        if (string.Compare(words[0], "SentryFile") == 0)
            SentryFile = words[1]+ " " +words[2]+ " " +words[3];
        if (string.Compare(words[0], "CS") == 0)
            CS = words[1];
    }
    if (SentryFile != null && CS != null)
        break;
}
Console.WriteLine(SentryFile);
Console.WriteLine(CS);
0
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582
06.09.2015, 12:22
На скорую руку, понятно что можно всё сделать для универсального поиска. А класса типа HtmlAgilityPack`a, для парсинга таких документов не знаю. может и есть.
C#
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
class Program
    {
        static void Main()
        {
            var pathes = Directory.GetFiles(@"F:\Study\GitHub\Testing\ApllicationForTesting\ApllicationForTesting","*.ini");
            if(pathes!= null)
                using (StreamReader stream = new StreamReader(pathes[0]))
                {
                    string data, cs = " ", sentryFile = " ";
                    while ((data = stream.ReadLine()) != null)
                    {
 
                        string[] split = data.Split(new string[] { "\"" ,"  " }, StringSplitOptions.RemoveEmptyEntries);
                        switch(split[0])
                        {
                            case "CS": cs = split[1];
                                break;
                            case "SentryFile": sentryFile = split[1];
                                break;
                        }
                    }
                    Console.WriteLine("CS = {0}   SentryFile = {1}", cs, sentryFile);
                }
        }
       
    }
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
06.09.2015, 12:35  [ТС]
Даценд, выдает пустоту

Добавлено через 4 минуты
MaxSlim, Тоже пусто
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.09.2015, 12:40
ivleb,
у меня не пустота:
Миниатюры
Чтение файла и поиск нужного параметра  
0
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582
06.09.2015, 12:42
Пусть к файлу правильный? Если расширение не .ini, тогда надо сепоратор менять.
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
06.09.2015, 12:44  [ТС]
Даценд, Просто дело в том что файл этот на всех пк разный.. форма одна и та же но содержимое разное.. формат файла vdf

Code
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"InstallConfigStore"
{
    "Software"
    {
        "Valve"
        {
            "Steam"
            {
                "Accounts"
                {
                    "name1"
                    {
                        "SteamID"       "342342343"
                    }
                    "name2"
                    {
                        "SteamID"       "23423423"
                    }
                }
                "CurrentCellID"     "62"
                "PingTimeForCurrentCellID"      "0"
                "MTBF"      "qwe"
                "cip"       "123423423456789"
                "CM"        "12342341"
                "CS"        "123123123;123123"
                "SentryFile"        "C:\\Program Files (x86)\\Steam\\ssfn7220959053171346550"
                "ConnectCache"
                {
                    "e6afb0b31"     "020000003b14264eb6f2cb1c624a4530a8d31126a6085ccf930c139e"
                }
                "Rate"      "30000"
                "SurveyDate"        "2015-03-08"
                "BaseInstallFolder_1"       "J:\\SteamLibrary"
                "depots"
                {
                    "63387"
                    {
                        "DecryptionKey"     "b1e0666bcc6203a44c6ec79d0a993f62dbae5a3c3d42e9ab42016e503500e199"
                    }
                }
                "NCTF"      "0"
                "LastConfigstoreUploadTime"     "wqewe"
                "NoSavePersonalInfo"        "0"
                "MaxServerBrowserPingsPerMin"       "0"
                "DownloadThrottleKbps"      "0"
                "AllowDownloadsDuringGameplay"      "0"
                "AutoUpdateWindowStart"     "-1"
                "AutoUpdateWindowEnd"       "-1"
            }
        }
    }
    "Music"
    {
        "LocalLibrary"
        {
            "Directories"
            {
                "0"     "000"
                "1"     "111"
            }
        }
    }
    "streaming"
    {
        "ClientID"      "6125602314131653748"
    }
    "AuthorizedDevice"
    {
        "82961224"
        {
            "timeused"      "used111"
            "description"       "name"
            "tokenid"       "token"
        }
    }
}
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.09.2015, 12:45
ivleb,
а что записывается в массив text в строке
C#
1
string[] text = File.ReadAllLines(@"D:\Folder\1.txt");
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
06.09.2015, 12:45  [ТС]
MaxSlim, проверял.. с форматом vdf работает.. только видимо проблема в содержимом документа
0
116 / 115 / 64
Регистрация: 03.06.2013
Сообщений: 582
06.09.2015, 12:55
Поставь точку останов на строке
C#
1
  string[] split = data.Split(new string[] { "\"" ,"  " }, StringSplitOptions.RemoveEmptyEntries);
Результаты строк все там.
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
06.09.2015, 12:59  [ТС]
MaxSlim,[img]http://s7.********************/uploads/images/2015/09/97fb78e60fe4d83d7d5cec0f6fb4a0d7.png[/img]
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
06.09.2015, 13:01
Лучший ответ Сообщение было отмечено ivleb как решение

Решение

Можно еще регуляркой:
C#
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication81
{
    class Program
    {
 
       static string text = @"""InstallConfigStore""
{
    ""Software""
    {
        ""Valve""
        {
            ""Steam""
            {
                ""Accounts""
                {
                    ""name""
                    {
                        ""SteamID""       ""XXXXXXXXXXXX""
                    }
                }
                ""CurrentCellID""     ""ZZ""
                ""CS""        ""123123123123""
                ""SentryFile""        ""C:\\Program Files (x86)\\Steam\\ssfn2668945729809862374""
                ""ConnectCache""
                {
                    ""e6afb0b31""     ""43fs4gfsdfdf""
                }
                ""Rate""      ""30000""
                ""SurveyDate""        ""2014-12-11""
                ""NCTF""      ""0""
                ""BaseInstallFolder_1""       ""D:\\SteamLibrary""
                ""depots""
                {
                    ""350356""
                    {
                        ""DecryptionKey""     ""089fb68dad0484b31152e79d45aa50d958783cdb9efb2f0e4476acc8cddc25ac""
                    }
                }
            }
        }
    }
}";
 
 
        static void Main(string[] args)
        {
            foreach (var m in Regex.Matches(text, @"(?<=(SentryFile|CS)""\s*"").*(?="")")) { Console.WriteLine(m.ToString()); }
            Console.Read();
        }
    }
}
1
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
06.09.2015, 13:07  [ТС]
EvilFromHell, чет не доходит.. а файл как читать тогда?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
06.09.2015, 13:15
ivleb,
мне кажется основная проблема не с поиском значений параметра в тексте, а с чтением текста из файла. В предложенном мной коде что записывается в массив text?
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
06.09.2015, 13:15
Лучший ответ Сообщение было отмечено ivleb как решение

Решение

EvilFromHell, чет не доходит.. а файл как читать тогда?
Через File.ReadAllText
1
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
06.09.2015, 13:29  [ТС]
EvilFromHell, Спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.09.2015, 13:29
Помогаю со студенческими работами здесь

Поиск нужного MAC-адреса
Доброго времени суток. Возник вопрос, а возможно ли, зная MAC-адрес устройства, а так же то, что оно шлёт BOOTP пакеты, обнаружить его...

Поиск индекса нужного элемента
Дан массив состоящий из 0 и 1. Как найти индекс единицы, которая находится ближе всего к 0(любому).Заранее спасибо. Добавлено через 27...

Поиск по Json и получение нужного ID
Доброго времени суток. Получаю Json: {&quot;meta&quot;:{&quot;code&quot;:200},&quot;data&quot;: } Сериализую его: public class Meta { public...

Чтение параметра из реестра
Помогите прочитать и вывести на экран параметр из реестра (REG_BINARY) ... Уже рыл много по функции GetValue. Подключаю модуль:...

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru