【问题标题】:How to use IF(File.Exists) statement如何使用 IF(File.Exists) 语句
【发布时间】:2018-04-16 09:25:40
【问题描述】:

我目前正在尝试使用 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 的文本框中,它会打开下一个窗口,但我希望能够将文件名放入例如 HarrySmith 并让它读取和打开新窗口! 提前致谢

【问题讨论】:

  • 文件名在现代操作系统上不是唯一的。您必须告诉操作系统在哪里查看(文件夹)。
  • 如果你只把文件名放进去,它怎么知道在哪个目录下查找?如果您只想对其进行硬编码,那么只需使用该文件名和Path.Combine 来创建您要使用的实际路径。
  • 您应该考虑使用更可靠的用户身份验证系统 ;-)
  • 您可以添加选择文件的逻辑,将文件的完整路径保留在变量中,并将显示字段中的值更新为文件名
  • 对不起,我对这个完全陌生!我不确定,我将如何指定只查找文件名,好像。我在搜索时将路径放入文本框允许它工作吗?

标签: c#


【解决方案1】:

如果您只想输入不带扩展名的文件名,您可以这样做:

String FilePath = UsernameTextBox.Text + ".txt";

但是,如果您希望两者都工作,您可以这样做:

String FilePath = UsernameTextBox.Text;
if(Path.GetExtension(FilePath) != ".txt")
{
     FilePath += ".txt";
}

这使得当有人在末尾输入带有“.txt”的文件名时,它不会在末尾添加两次“.txt”。

【讨论】:

    【解决方案2】:

    如果你只放文件名而不放完整路径,那么程序就无法知道这个文件在哪里,所以它只会查找程序所在的当前目录。话虽如此,如果文件扩展名和保存这些文件的位置是不变的(即它不会改变),一种可能的解决方案是:

    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)
    

    到您保存文件以满足您的需求的任何路径。

    【讨论】:

      【解决方案3】:

      如果您只想输入文件名,则必须手动提供文件位置和文件扩展名。为此,您只需执行以下操作即可。

      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?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 2017-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-25
        相关资源
        最近更新 更多