从文件中读取数据并将其分配给变量

时间:2019-06-20 17:25:14

标签: c# file

我需要从文件中读取数据,所以我有这段代码。

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);
    }
}         

在文档中我有

  • 名称:Hugo
  • 年龄:23​​

当我执行代码时,如果它只是一次又一次地读取名称,它将停留在第一个循环中,我的问题是,如何才能退出该循环以读取其他数据?

2 个答案:

答案 0 :(得分:2)

您需要更新每次读取的字符串:

       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所指出的,您也可以将read置于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();

答案 1 :(得分:0)

您需要检查何时到达文件末尾,请参阅Docs

             using (StreamReader sr = new StreamReader(path)) 
            {
                while (sr.Peek() >= 0) 
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }