我目前正在尝试使用if语句来查看是否在名为Accounts的文件夹中的txt文件并确定该文件是否存在,如果存在则会打开下一个窗口,如果不存在,然后用户得到一个回复说帐户不存在!这是我的代码
String FilePath = UsernameTextBox.Text;
if(File.Exists(FilePath)
{
Welcome openForm = new Welcome();
openForm.Show();
}
Else
{
MessageBox.Show(“Account Does Not Exist”)
}
它的工作意味着如果我将完整路径放入带有扩展名.txt的文本框中,它会打开下一个窗口,但我希望能够将FileName放在例如HarrySmith中并让它读取和打开新窗口! 提前致谢
答案 0 :(得分:2)
如果您只想输入没有扩展名的文件名,可以执行以下操作:
String FilePath = UsernameTextBox.Text + ".txt";
但是,如果你想要两者兼顾,你可以这样做:
String FilePath = UsernameTextBox.Text;
if(Path.GetExtension(FilePath) != ".txt")
{
FilePath += ".txt";
}
这样就可以在有人输入文件名时使用' .txt'最后,它不会添加' .txt'到最后两次。
答案 1 :(得分:1)
如果只放置没有完整路径的文件名,那么程序无法知道该文件的位置,因此它只能查看程序所在的当前目录。话虽这么说,如果文件扩展名和保存这些文件的地方是不变的(即它没有改变),一个可能的解决方案就是:
String FilePath = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), UsernameTextBox.Text + ".txt");
if(File.Exists(FilePath)
{
Welcome openForm = new Welcome();
openForm.Show();
}
else
{
MessageBox.Show("Account Does Not Exist")
}
此代码将搜索AppData文件夹中的文件,该文件名以您在文本框中输入的内容命名,扩展名为“.txt”;话说,使用此解决方案,您唯一需要做的就是在文本框中输入文件名,而不是完整路径或扩展名。当然你可以改变这行代码:
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
到您保存文件的任何路径,以满足您的需求。
答案 2 :(得分:0)
如果您只想输入文件名,则必须手动提供文件位置和文件扩展名。要做到这一点,你可以简单地做这样的事情。
string filePath = "C:\\Accounts\\";
filePath += textBoxUsername.Text + ".txt";
if (File.Exists(filePath))
{
Welcome openForm = new Welcome();
openForm.Show();
}
else
{
MessageBox.Show(“Account Does Not Exist”)
}
推荐阅读:https://www.dotnetperls.com/file-exists
但是,如果您尝试对用户进行身份验证,我建议您不要这样做。我已经包含了一些可能帮助您完成所需内容的StackOverflow问题。
推荐读物
How to properly store password locally
How to securely save username/password (local)?
Retrieve Credentials from Windows Credentials Store using C#
How do I store and retrieve credentials from the Windows Vault credential manager?