C# StreamReader无法读取第二行

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

我正在使用StreamReader从.csv文件中读取用户名和密码(我只是尝试一下,因为我是C#新手)。出于某种原因,如果我按“登录”,它对文件第一行中的帐户有效,但对第二行无效。有人能帮忙吗

注册代码(写入程序):

试试看
{
使用(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];
    }
}