winforms 当搜索到的文件在Programs(x86)文件夹中时,为什么FileExists(path)不起作用?

uplii1fm  于 2023-04-21  发布在  其他
关注(0)|答案(3)|浏览(158)

我不知道为什么或什么工作周围可能是,所以基本的事情,我想检查如果一个特定的.exe存在,如果是这样,继续否则带来错误消息。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnCreateBackup.Click
  Dim path As String = txtFirebirdPath.Text & "\gbak.exe"
  If My.Computer.FileSystem.FileExists(path) Then
    ...
  Else
    ...
  End if
End Sub
  • txtFirebirdPath是文本框的名称,在fodler选择之后,将选定路径作为文本。

虽然gbak.exe确实存在,但我的程序告诉我,它不是我已经尝试过的,如果它在我的桌面上,它可以找到它没有问题,所以在其他所有路径中,只是当它包括程序(x86)时,为什么?
完整表格代码:https://github.com/20Peety02/stackoverflow_issue * 问题在第145行 *

7vhp5slm

7vhp5slm1#

对我来说很好。显示文件是否存在。

Public Class Form1

   Dim selectedfoldername As String = Nothing
   Dim specifiedfilename As String = Nothing

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
      '
      FolderBrowserDialog1.ShowDialog()
      selectedfoldername = FolderBrowserDialog1.SelectedPath
      MsgBox("The filepath " & selectedfoldername & " was selected.")
      '
   End Sub

   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
      '
      specifiedfilename = Trim(TextBox1.Text)
      '
   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
      '
      If Trim(selectedfoldername) <> "" Then
         If Trim(specifiedfilename) <> "" Then
            If My.Computer.FileSystem.FileExists(selectedfoldername & "\" & specifiedfilename) Then
               MsgBox("File Exists: " & selectedfoldername & "\" & specifiedfilename & " exists already")
            Else
               MsgBox("File Not Found: " & selectedfoldername & "\" & specifiedfilename & " does not exist")
            End If
         Else
            MsgBox("No filename specified")
         End If
      Else
         MsgBox("No folder selected")
      End If
      '
   End Sub

End Class

也许你的问题在其他地方,你需要检查代码的其余部分。

2jcobegt

2jcobegt2#

传递给My.Computer.FileSystem.FileExists的字符串可能有两个反斜杠(在一行中),因此它将返回False:
C:\Program Files (x86)\\gbak.exe
按照克雷格的建议,看看System.IO.Path.Combine,这个函数将返回一个正确构建的路径。

vu8f3i0k

vu8f3i0k3#

回答是:问题是什么@Zeddy指出之前,我检查在错误的地方,这是我guve到gbak.exe要执行的过程参数,因为我只有一个捕捉异常,它总是会落入未找到的msg...这是我的坏我纠正了语法,它现在工作的预期,感谢大家的帮助!

相关问题