我需要从文件中读取数据,所以我有这段代码。
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);
}
}
在文档中我有
当我执行代码时,如果它只是一次又一次地读取名称,它将停留在第一个循环中,我的问题是,如何才能退出该循环以读取其他数据?
答案 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());
}
}