我需要从文件中读取数据,所以我有以下代码。
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);
}
}
在这份文件中我有
雨果
当我执行代码时,它停留在第一个if中的循环中,所以它只是一次又一次地读取名称,我的问题是,我如何才能走出那个循环来读取其他数据?
发布于 2019-06-21 01:28:09
您需要更新每次读取的字符串:
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-condition中:
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();
发布于 2019-06-21 01:30:03
当您到达文件末尾时,YOu需要检查,请参阅Docs
using (StreamReader sr = new StreamReader(path))
{
while (sr.Peek() >= 0)
{
Console.WriteLine(sr.ReadLine());
}
}
https://stackoverflow.com/questions/56691099
复制相似问题