如何使用IF(File.Exists)语句

时间:2018-04-16 09:25:41

标签: c#

我目前正在尝试使用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中并让它读取和打开新窗口! 提前致谢

3 个答案:

答案 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?