Чтение данных из файла и назначение их переменным - PullRequest
0 голосов
/ 20 июня 2019

Мне нужно прочитать данные из файла, поэтому у меня есть этот код.

public static void readData()
{
    TextReader readFile;
    string chain;
    bool found = false;
    string[] fields = new string[2];
    char[] breakUp = { ':' };

    try
    {     
        readFile = new StreamReader("C:\\Users\\unam\\Documents\\Hugo\\Datos.txt");

        chain = readFile.ReadLine();
        while (chain != null)
        {
            fields = chain.Split(breakUp);


            if (fields[0].Trim().Equals("Name"))
            {
                name = fields[1].Trim();            
            }
            else
            {
                if (fields[0].Trim().Equals("Age"))
                {
                    Age = fields[1].Trim();    
                }
            }
            readFile.Close();

         }
    }
    catch(FileNotFoundException fe)
    {
        Console.WriteLine("¡File not found!" + fe.Message);
    }
    catch(Exception e)
    {
        Console.WriteLine("¡File not found!" + e.Message);
    }
}         

И в документе у меня есть

  • Имя: Хьюго
  • Возраст: 23

Когда я выполняю код, он остается в цикле в первом, если он просто читает имя снова и снова, мой вопрос, как я могу выйти из этого цикла, чтобычитать другие данные?

Ответы [ 2 ]

2 голосов
/ 20 июня 2019

Вам необходимо обновлять строку, которую вы читаете каждый раз:

       chain = readFile.ReadLine();
       while (chain != null)
       {
           fields = chain.Split(breakUp);


           if (fields[0].Trim().Equals("Name"))
           {
                name = fields[1].Trim();
           }
           else
           {
               if (fields[0].Trim().Equals("Age"))
               {
                    Age = fields[1].Trim();
               }
            }
       chain = readFile.ReadLine(); // <--
       }
       readFile.Close();

Как указано Broots Waymb , вы также можете поместить чтение в условие while:

       while ((chain = readFile.ReadLine()) != null)
       {
           fields = chain.Split(breakUp);


           if (fields[0].Trim().Equals("Name"))
           {
                name = fields[1].Trim();
           }
           else
           {
               if (fields[0].Trim().Equals("Age"))
               {
                    Age = fields[1].Trim();
               }
            }
       }
       readFile.Close();
0 голосов
/ 20 июня 2019

Вам необходимо проверить, когда вы дойдете до конца файла, см. Документы

             using (StreamReader sr = new StreamReader(path)) 
            {
                while (sr.Peek() >= 0) 
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...