【问题标题】:My C# code can't see my directory in my C drive...even though the directory exists我的 C# 代码在我的 C 驱动器中看不到我的目录...即使该目录存在
【发布时间】:2016-02-01 17:16:21
【问题描述】:

我的目录在 C:\Testing\Event Log 123

123 部分是时间戳。我的代码运行并在完成后在 C:\Testing 中生成一个带时间戳的目录。我有这段代码可以检查该目录是否存在:

string dirToCopy = @"C:\Testing\Event Log " + timestamp;
if (System.IO.Directory.Exists(dirToCopy))
{
   APILog.AddMessage("Event System log directory found.");
}
else
{
   APILog.AddMessage("Event System log directory not found.");
 }      

该目录确实存在于该位置,但显示的是 else 语句的日志消息。我认为权限没有问题,因为如果是这种情况,我会遇到安全异常……那么为什么我的代码现在看不到我自己的眼球可以看到的目录呢?我尝试输出 dirToCopy 以确保它与目录的实际名称匹配。它们匹配,所以我很惊讶我的代码没有看到它。

编辑以获取更多信息:我的代码在客户端 PC 上运行。它生成目录并将其粘贴到主 PC 的 C:\Testing 目录中。主 PC 的 C:\Testing 目录是一种客户端也可以访问的共享目录。不过,这有关系吗? C:\Testing 在主 PC 上,我在主 PC 上运行代码。

【问题讨论】:

  • 贴出的代码没有问题。我怀疑在调试时可能会忽略一些简单的事情,但我们不知道。
  • 您对目录有权限吗?
  • 我应该有权利。我编辑了帖子以添加更多信息。我有一台带有客户端 PC 的主 PC。生成日志目录的代码在客户端 PC 上运行。它将目录粘贴到主 PC 的 C 驱动器上,客户端 PC 可以将其作为一种共享驱动器使用。
  • 确认运行客户端 PC 的用户有权访问您所说的共享驱动器
  • 用户以管理员身份登录并拥有权限。

标签: c# directory


【解决方案1】:

所以您要查找的目录是"C:\Testing\Event Log2016.01.26" 或者"C:\Testing\Event Log\2016.01.26"

重点是 - 最后的斜线?是不是不见了?

您也可以考虑使用Path.Combine() 来构建路径字符串

【讨论】:

  • 时间戳不是单独目录的名称。我将时间戳附加到“事件日志”的末尾,它形成了目录的名称。例如,当我生成目录时,它的名称最终会变成“C:\Testing\Event Log 20160126”
  • 您正在执行代码的上下文呢?可能是权限问题?
【解决方案2】:

这是 MSDN 所说的

如果您没有对该目录的最低只读权限,则 Exists 方法将返回 false。

https://msdn.microsoft.com/en-us/library/system.io.directory.exists.aspx

所以它不会引发安全异常......所以请检查您是否对该目录具有读取权限

更新

如果是共享目录,那么你的路径应该是这样的

string dirToCopy = @"\\MainPC\Testing\Event Log 123" (Assuming testing folder is shared)

如果是 UNC 路径,那么你的路径应该是这样的

string dirToCopy = @"\\MainPC\C$\Testing\Event Log 123"

【讨论】:

    猜你喜欢
    • 2013-10-11
    • 1970-01-01
    • 2021-08-07
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多