Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从文件中读取数据并将其分配给变量_C#_File - Fatal编程技术网

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

C# 从文件中读取数据并将其分配给变量,c#,file,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:\\Us

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

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

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

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

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

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

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

您需要在到达文件末尾时进行检查,请参阅


您需要在到达文件末尾时进行检查,请参阅


您需要不断地将行读入
。不要让它保持相同的值,否则什么都不会改变。chain=readFile.ReadLine();应该在while部分。此外,您应该使用块将
StreamReader
/
文本阅读器
包装在一个
中。您需要将读取的行保存到
链中。不要让它保持相同的值,否则什么都不会改变。chain=readFile.ReadLine();应该在while部分。另外,您应该使用
块将
StreamReader
/
文本阅读器
包装在
中。您可以通过执行
while((chain=readFile.ReadLine())!=null)
并删除2
chain=readFile.ReadLine()来简化这一点行。我尝试对代码进行尽可能小的更改,但由于这是一个很好的改进,我将添加它。您可以通过执行
while((chain=readFile.ReadLine())!=null)
并删除2
chain=readFile.ReadLine()行。我尝试对代码进行尽可能小的更改,但由于这是一个很好的改进,我将添加它
             using (StreamReader sr = new StreamReader(path)) 
            {
                while (sr.Peek() >= 0) 
                {
                    Console.WriteLine(sr.ReadLine());
                }
            }