【问题标题】:Code says File doesn't exist, but exists代码说文件不存在,但存在
【发布时间】:2014-03-14 23:32:00
【问题描述】:

我有一个由 OCR 程序创建的文件,我在创建后尝试访问该文件。在我的代码中,我正在检查文件是否存在。如果我这样检查:

 If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" + sNewFileName) Then

程序说该文件不存在。 但是,如果我这样设置路径:

 If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\8application2_0001.txt") Then

程序继续进行。

当我调试并逐行进入代码时,程序执行并使用参数化字符串返回文件存在(第一个代码示例)

  • 我已将文件/文件夹权限设置为所有人的完全控制(仅用于本测试)。 该文件不是只读文件,而是“准备归档”。

有什么想法吗?

编辑:

我根据以下建议修改了代码:

            Dim sPortalPath, sFullPath, sDirPath As String
            sDirPath = "C:\inetpub\wwwroot\usbtest\"
            sPortalPath = "Portals\0\uploads\"
            sFullPath = sDirPath & sPortalPath & sNewFileName

            If File.Exists(sFullPath) = True Then

调试器给了我以下信息:

当我运行程序时,它告诉我它不存在! (我在扯我的头发)

【问题讨论】:

  • sNewFileName 真的有“8application2_0001.txt”作为值吗?也许你在它前面加了一个反斜杠。
  • [叹气] 你的调试器在 'sNewFileName' 字符串中显示了什么?如果将字符串表达式加载到中间字符串值中并检查它,那里面有什么?
  • sNewFileName 是否也包含扩展名?
  • 从调试器复制:sNewFileName "8application2_0001.txt" String
  • 顺便说一句,在 VB 中使用 '&' 进行字符串连接总是更好,因为在某些 circs 下,'+' 会导致编译器尝试将您的字符串转换为 int(等)和执行加法。在这种情况下看不到它,但要让开是一回事。

标签: asp.net vb.net vb.net-2010


【解决方案1】:

在 VB 中,您应该使用 & 运算符连接字符串

If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" & sNewFileName) Then

而不是

If File.Exists("C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" + sNewFileName) Then

【讨论】:

  • 但它也可以。即使 - 你是对的 - 这是一个不好的做法。
【解决方案2】:

把你的文件放在一个字符串变量中

 Dim nStr As String = "C:\inetpub\wwwroot\usbtest\Portals\0\uploads\" & sNewFileName) 

那么就这样检查吧……

If File.Exist(nStr) Then ...

编辑试试这个...

 Dim myFilePath as string=Server.MapPath ("~/myfolder/" & sNewFileName)
 If File.Exists(myFilePath) Then
 'do my work here'
 End If

【讨论】:

  • 在 if file.exist 中断时将断点悬停在 nStr 变量上并确保它是正确的。
【解决方案3】:

这是来自 MSDN 的链接,解释 File.Exists Method

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2018-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多