-1

所以我的字符串一定有问题。

我正在从如下所示的 SQL 数据库中获取值:

while (reader.Read())
{
    // Row Values
    // 0 = UID
    // 1 = CreatedDate
    // 2 = Location
    documentID = reader.GetGuid(0);
    fileName = reader.GetSqlValue(0).ToString() + ".zip";
    location = reader.GetString(2);
    createdDate = reader.GetDateTime(1);

从数据库返回的值如下:

GUID: DC5A30D7-D528-4BA4-AA5A-5ECEB2CD9006
fileName: DC5A30D7-D528-4BA4-AA5A-5ECEB2CD9006.zip
Location: \\192.168.22.1\documentation


if (!DoesFileExist(location + fileName))
{
    // Log error to database
}

static bool DoesFileExist(string location)
        {
            bool doesExist = false;
            if (File.Exists(location))
            {
                doesExist = true;
            }

            return doesExist;
        }

当它到达 File.Exists(location) 部分时,它会通过它,就好像它不存在一样。Bur 它确实......当我在资源管理器中导航到它时,我发现 zip 文件很好......

我在这里做错了什么?

UID CreatedDate Location
DC5A30D7-D528-4BA4-AA5A-5ECEB2CD9006    2009-10-28 11:17:06.690 \\192.168.22.1\documentation
4

3 回答 3

3

正如上面示例中所写的那样,Location + Filename它不会产生正确的完整文件名。没有反斜杠将路径与文件名分开。
我建议使用Path.Combine类(System.IO.Path)中的适当方法来制作正确的完整文件名

if (!DoesFileExist(Path.Combine(location, fileName)))
于 2013-09-20T19:47:34.333 回答
2

在我看来,您正在向该方法发送:“\192.168.22.1\documentationDC5A30D7-D528-4BA4-AA5A-5ECEB2CD9006.zip”。

尝试在那里放另一个“\”。

于 2013-09-20T19:48:03.443 回答
0

大多数时候我有这样的问题,这是因为权限。通常,文件资源管理器的用户与试图查找文件存在的文件不同。如果该位置的一切都正确,那么下一个要查看的地方将是权限。

于 2013-09-20T19:50:11.657 回答