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)
并删除2chain=readFile.ReadLine()来简化这一点代码>行。我尝试对代码进行尽可能小的更改,但由于这是一个很好的改进,我将添加它。您可以通过执行while((chain=readFile.ReadLine())!=null)
并删除2chain=readFile.ReadLine()代码>行。我尝试对代码进行尽可能小的更改,但由于这是一个很好的改进,我将添加它
using (StreamReader sr = new StreamReader(path))
{
while (sr.Peek() >= 0)
{
Console.WriteLine(sr.ReadLine());
}
}