【问题标题】:Navigating back and forward at once in path C#在路径 C# 中一次前后导航
【发布时间】:2016-05-23 15:07:47
【问题描述】:

我必须返回路径中的 5 个文件夹,然后我需要进一步输入 3 个文件夹并检查文件是否存在。

让我们想象两条路径:

1) C:\a\b\c\d\e\f\g\

2) C:\a\2\3\4\5\test.xml

那么我的程序现在在第一条路径上。 我需要检查文件 test.xml(在第二个路径上)是否存在。

为此,我知道 File.Exists(path) 方法,但是路径有问题。 我可以回来,直到文件夹 a 并检查文件是否存在。 例如检查路径上的文件是否存在:

3) C:\a\test2.xml

我可以使用:

File.Exists(@".\.\.\.\.\.\" + @"test2.xml");

但是我尝试导航到第二条路径 (2) 并检查此文件是否存在,但我无法做到这一点。有人可以帮我吗?提前致谢。问候。

【问题讨论】:

  • 你能展示一些你所做的代码吗?有点不清楚你的问题到底是什么。您可能正在寻找Path.GetDirectoryName()
  • 其实这个过程没有代码。如果文件存在,我想制作 if() 输入

标签: c# path


【解决方案1】:

。指当前目录 ..指当前上一级目录

在你的例子中:

..\..\..\..\..\..\2\3\4\5\test.xml

这会向上移动到 a 目录,然后向下遍历到文件所在的 5。

这可能有助于测试您的路径并确保您处于您认为的位置:

string currentPath = Path.GetFullPath(relativePath);

然后检查 currentPath 的值,如果它在你没想到的地方结束,你可以调试你的路径遍历而不是你的代码。

【讨论】:

  • 现在我一直在使用 Path.Combine 和 Path.GetFullName 方法进行调试。谢谢你的时间和问候:)
【解决方案2】:

您只需要使用.. 来表示父目录。

试试:

File.Exists(@"..\..\..\..\..\..\" + @"test2.xml");

【讨论】:

  • 使用即时窗口:File.Exists(Path.Combine(@"..\..\..\..\.." + @"\CoreCalc.dll"));给我 false while File.Exists(Path.Combine(@".\.\.\.\." + @"\CoreCalc.dll"));给了我真实的。无论如何谢谢你的回复:)
  • @jankowalski:看看Path.Combine 返回什么。你实际上只是得到\CoreCalc.dll
  • 这段代码将使用运行可执行文件的目录来查找路径。您可能需要假设它在 bin/Debug 中运行,所以再上两个目录。
  • 你是对的 Saqib,实际上我有另一个同名和扩展名的文件,这就是我得到真实的原因。当然..正在回归。我的最终产品正在与调试文件不同的位置工作。现在我一直在使用 Path.Combine 和 Path.GetFullName 方法进行调试。谢谢你的时间和问候:)
猜你喜欢
  • 2019-08-08
  • 2020-11-29
  • 1970-01-01
  • 2019-08-07
  • 2012-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
相关资源
最近更新 更多