@SaddledSharp
Кодер. Увлекаюсь информационной безопасностью.

C#. Удалить из файла всё что не связано с введённым ID?

Всем привет.
У меня есть такой файл:
"users"
{
	"76561198405997878"
	{
		"AccountName"		"maks_22_pro"
		"PersonaName"		"ZTESLA.RU"
		"RememberPassword"		"0"
		"mostrecent"		"1"
		"Timestamp"		"1572455393"
	}
}
{
	"76561198404997878"
	{
		"AccountName"		"maks_422_pro"
		"PersonaName"		"ZTESLA.RU4"
		"RememberPassword"		"0"
		"mostrecent"		"1"
		"Timestamp"		"1572455393"
	}
}

И вот к примеру я ввожу свой ID ("76561198405997878") и всё что с этим ID не связано должно удалиться из файла.
То есть на выходе я должен получить такой файл:
{
	"76561198405997878"
	{
		"AccountName"		"maks_22_pro"
		"PersonaName"		"ZTESLA.RU"
		"RememberPassword"		"0"
		"mostrecent"		"1"
		"Timestamp"		"1572455393"
	}
}

как такое реализовать?
  • Вопрос задан
  • 61 просмотр
Решения вопроса 1
SpacePurr
@SpacePurr
c#, wpf
Здравствуйте.

Дело было вечером, делать было нечего.

Создаем класс UserInfo, в котором будем хранить наши строки.

class UserInfo
{
    public string ID { get; set; }

    public string AccountName { get; set; }
    public string PersonaName { get; set; }
    public string RememberPassword { get; set; }
    public string Mostrecent { get; set; }
    public string TimeStamp { get; set; }
}


Теперь порядок действий такой:
  1. Создаем список наших UserInfo
  2. Парсим файл и заполняем список
  3. На выходе фильтруем список по ID
  4. Создаем новый файл и записываем в него свойства объекта UserInfo, в данном случае строки файла

class Program
{

    static void Main(string[] args)
    {
        string path = @"E:\=NoDel=\Рабочий стол\Новый текстовый документ (2).txt";

        List<UserInfo> users = new List<UserInfo>();

        using (StreamReader sr = new StreamReader(path))
        {
            string line;
            while ((line = sr.ReadLine()) != null)
            {
                if (line == "{")
                    users.Add(GetUserInfo(sr));
            }
        }

        string SelectedID = "\"76561198404997878\""; //например вот такой ID мы выбрали
        string writePath = @"E:\=NoDel=\Рабочий стол\Новый текстовый документ (3).txt";

        UserInfo selectedUserInfo = users.FirstOrDefault(u => u.ID.Contains(SelectedID));

        using (StreamWriter sw = new StreamWriter(writePath))
        {
            sw.WriteLine("{");
            sw.WriteLine(selectedUserInfo.ID);
            sw.WriteLine("  {");
            sw.WriteLine(selectedUserInfo.AccountName);
            sw.WriteLine(selectedUserInfo.PersonaName);
            sw.WriteLine(selectedUserInfo.RememberPassword);
            sw.WriteLine(selectedUserInfo.Mostrecent);
            sw.WriteLine(selectedUserInfo.TimeStamp);
            sw.WriteLine("  }");
            sw.WriteLine("}");
        }

        Console.ReadLine();
    }

    public static UserInfo GetUserInfo(StreamReader sr)
    {
        UserInfo userInfo = new UserInfo
        {
            ID = sr.ReadLine()
        };

        sr.ReadLine();

        userInfo.AccountName = sr.ReadLine();
        userInfo.PersonaName = sr.ReadLine();
        userInfo.RememberPassword = sr.ReadLine();
        userInfo.Mostrecent = sr.ReadLine();
        userInfo.TimeStamp = sr.ReadLine();
        return userInfo;
    }
}


Это если по быстрому. В будущем старайтесь разбивать задачу на подзадачи и гуглить. Все это легко решается с помощью нескольких ссылок и серого вещества.

Удачи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы