C# StreamReader无法读取第二行
我正在使用StreamReader从.csv文件中读取用户名和密码(我只是尝试一下,因为我是C#新手)。出于某种原因,如果我按“登录”,它对文件第一行中的帐户有效,但对第二行无效。有人能帮忙吗 注册代码(写入程序):C# StreamReader无法读取第二行,c#,csv,streamreader,streamwriter,C#,Csv,Streamreader,Streamwriter,我正在使用StreamReader从.csv文件中读取用户名和密码(我只是尝试一下,因为我是C#新手)。出于某种原因,如果我按“登录”,它对文件第一行中的帐户有效,但对第二行无效。有人能帮忙吗 注册代码(写入程序): 试试看 { 使用(StreamWriter sw=new StreamWriter(“C:\\GameLauncherKarakurt\\users.csv”,true)) { sw.WriteLine(tbxUsername.Text+';'+tbxPassword.Text);
试试看
{
使用(StreamWriter sw=new StreamWriter(“C:\\GameLauncherKarakurt\\users.csv”,true))
{
sw.WriteLine(tbxUsername.Text+';'+tbxPassword.Text);
sw.Close();
}
}
抓住
{
//无所事事
}
登录代码(读卡器):
您没有保留CSV文件的结构。
所有用户和密码对必须用逗号(“,”)分隔,而不是用新行分隔,
在每个用户和密码对后添加逗号。
使用
Write()
而不是WriteLine()
这里有一种读取文件的方法使用
ReadToEnd()
并将所有用户和密码对拆分为一个数组,每对将位于不同的索引:
using (StreamReader sr = new StreamReader("C:\\GameLauncherKarakurt\\users.csv"))
{
var rows = sr.ReadToEnd();
string[] splitted = rows.Split(',');
}
现在,您可以使用“;”分隔符再次拆分数组的每个索引,请记住,您可以对“匹配”/“身份验证”逻辑进行一些改进。创建文件后,您可以使用以下语句从每行读取用户和密码:
using (StreamReader sr = new StreamReader(""C:\\GameLauncherKarakurt\\users.csv""))
{
while (!sr.EndOfStream)
{
strLine = sr.ReadLine();
string[] usernameSplit = strLine.Split(';');
string user = usernameSplit[0];
string password = usernameSplit[1];
}
}
嘿@Engin,你能提供一个csv文件中的一些行的例子吗?你有没有尝试过使用调试器单步执行代码?嗨,Engin,欢迎使用StackOverflow。请尝试在提问时添加更多信息,以便其他人能够更快地帮助您:)是否引发异常?预期的行为和正在发生的事情是什么?您在哪一行遇到问题(
第二行
不明确)为什么要打开同一个csv文件两次?您只需打开一次,然后使用ReadLine()两次。您很可能会遇到异常,因为您没有在再次使用前正确关闭StreamReader
。捕获异常并在Catch子句中放置一个调试器(Catch(Exception ex){…}
),您将了解它为什么不能按预期工作。
using (StreamReader sr = new StreamReader("C:\\GameLauncherKarakurt\\users.csv"))
{
var rows = sr.ReadToEnd();
string[] splitted = rows.Split(',');
}
using (StreamReader sr = new StreamReader(""C:\\GameLauncherKarakurt\\users.csv""))
{
while (!sr.EndOfStream)
{
strLine = sr.ReadLine();
string[] usernameSplit = strLine.Split(';');
string user = usernameSplit[0];
string password = usernameSplit[1];
}
}