随机访问文件

本文关键字:文件 访问 随机 | 更新日期: 2023-09-27 18:24:31

我创建了一个登录表单应用程序,表单有两个文本框,一个接受用户名,另一个接受密码,用户名和密码存储在一个名为"Registered.txt"的文本文件中,我希望我的程序能够读取"Registered.txt"文件,以检查如果用户使用随机访问文件点击登录,输入的密码或用户名是否有效。

随机访问文件

我将举一个例子,希望它能帮助您获得您想要的东西。

在本例中,Registered.txt文件应如下所示:Smartsasse,myPasswordOlofBoll,P@ssword

//var path = @"C:'Registered.txt";
var path = "Registered.txt";
var allLines = System.IO.File.ReadAllLines(path);
var userInfo = allLines.Select(l => l.Split(',')).Select(s => new
{
    Username = s[0],
    Password = s[1]
}).ToList();
var user = userInfo.FirstOrDefault(ui => ui.Username.ToLowerInvariant() == this.UserNameTextBox.Text.Trim().ToLowerInvarant());
if (user != null && user.Password == this.PasswordTextBox)
{
    // Login is okay
    this.ViewState["loggedInUser"] = user.Username;
}
else
{
    // Show error message
    throw new Exception("Couldn't login, invalid username or password.");
}

你需要通过"使用System.Linq;"来引用"System.Linq"。如果没有,你可以将一些代码更改为:

bool success = false;
foreach (var line in allLines)
{
    var username = line.Split(',')[0];
    var password = line.Split(',')[1];
    if (username == this.UserNameTextBox.Text && password == this.PasswordTextBox.Text)
    {
        // Login
        // this.ViewState["loggedInUser"] = user.Username;
        success = true;
        break;
    }
}
if (success == false)
{
    // Show error
    throw new Exception("Couldn't login, invalid username or password.");
}

这段代码不会只由它自己运行,但可能会帮助你得到你想要的。

首先,正如Edi G.在评论中提到的那样,将用户名和密码存储在纯文本文件中是非常糟糕的主意。这种方法的安全性绝对为零。

但如果你仍然想尝试,这里有一些指导。

要从文件中读取文本数据,您需要创建指向文件的FileStream和从该流中读取的StreamReader

using (var fs = new FileStream(@"path_to_your_file'Registered.txt", FileMode.Open))
{
    using (var reader = new StreamReader(fs))
    {
        var line = reader.ReadLine();
        while (line != null)
        {
            // do your checks here
            line = reader.ReadLine();  
        }
    }
}