好吧,我基本上试图找到一条带有“Users.txt”
的行到目前为止我的代码。
if (ok == "b" || ok == "B")
{
using (StreamWriter w = File.AppendText("Users.txt"))
{
//Test
Out.WriteLine("Please state the username");
string user = Console.ReadLine();
Out.WriteLine("Checking..");
if (w.Equals(user))
{
Out.WriteLine("Username is taken");
}
Thread.Sleep(pause);
Out.WriteLine("Please state the password for the user");
string pass = Console.ReadLine();
Logger(user, pass, w);
// Close the writer and underlying file.
w.Close();
Out.WriteLine("Checking..");
Out.WriteBlank();
Thread.Sleep(pause);
Out.WriteLine("Anything else Mr." + Environment.UserName + " ?");
}
string choice = Console.ReadLine();
if (choice == "no")
{
Boot();
}
if (choice == "yes")
{
Console.Clear();
Console.Title = "Administrator Panel";
Panel();
}
}
希望它看看是否采用了“用户”,然后阻止他们执行该过程。
感谢您的帮助。
答案 0 :(得分:2)
尝试将每个现有用户名(StreamReader
和File.Open
)读入数组/列表,然后将用户输入与该列表进行比较。
您当前的代码实际上并没有读取任何内容,因为您使用StreamWriter
File.AppendText
只允许您写入文件的末尾。
<强>实施例强>:
List<string> users = new List<string>();
using (StreamReader r = new StreamReader("Users.txt"))
{
string line;
while ((line = r.ReadLine()) != null)
{
users.Add(line);
}
}
...
string user = Console.ReadLine();
Out.WriteLine("Checking..");
if (users.Contains(user))
{
Out.WriteLine("Username is taken");
}
答案 1 :(得分:1)
您的代码存在各种问题。让我们看看我们是否可以一次分解一件。
using (StreamWriter w = File.AppendText("Users.txt"))
如果您想打开“Users.txt”并向其附加文本,此代码将非常有用。由于您要打开文件并从中读取,因此需要使用另一个对象StreamReader
对象:
using (StreamReader r = File.Open("Users.txt"))
接下来,您要检查给定的用户名是否在文件中。你在做:
if (w.Equals(user))
{
Out.WriteLine("Username is taken");
}
这不起作用。您正在将StreamWriter
对象与String
对象进行比较。他们永远不会平等。
您需要做的是改变程序的顺序,如下所示:
首先,将文件的全部内容读入内存。然后,在Using
语句之外,处理您的用户输入和用户名/密码检查。
我们假设文件的组织方式如下:
username,password
username2,password2
johnsmith,mysecretcode
janedoe,blahblah
例如,您可以将每一行读入Dictionary
对象,其中Key
是用户名,Value
是密码。
Dictionary<String, String> myDictionary = new Dictionary<String, String>
// Example of adding ONE username/password to the dictionary
myDictionary.Add("username", "password");
然后,检查用户名就像
一样简单bool containsUsername = myDictionary.ContainsKey(username);
检查密码是:
bool doesPasswordMatch = myDictionary[username] == givenPassword;
试一试! C#是一门很好的语言。