2

以前有人问过这个问题,但我似乎没有看到我的确切解决方案。我需要遍历文件中使用相对路径的一些链接,并检查它们是否链接到存在的文件。给定以下文件和文件夹:

C:\Level 1\Level 2\A.txt
C:\Level 1\B.txt

A.txt 中可能有一个使用相对路径链接到 B.txt 的链接..\B.txt

我将拥有当前的遍历目录,,C:\Level 1\Level 2并且需要将其结合..\B.txt起来,C:\Level 1\B.txt以便我可以检查 B.txt 的存在。

我尝试使用 Path.Combine 但这没有用。还有其他想法吗?它需要能够支持多个级别,例如..\..\..\D.txt.

4

1 回答 1

6

Path.Combine 应该与“。”一起正常工作。和“..”相对路径。如果你有两个字符串,path1 = "C:\Level 1\Level 2" 和 path2 = "..\B.txt" 然后调用 Path.Combine(path1, path2),返回的字符串将是 "C :\Level 1\Level 2\..\B.txt",它将作为 .NET 中的路径。然后,您可以获取该字符串并对其调用 File.Exists 以确认该组合路径中的文件是否存在。

如果要解析 Path.Combine 输出中的相对路径组件“..”,则从 Path.Combine 获取初始输出并将其传递给 Path.GetFullPath 会将其转换为正确的绝对路径。File.Exist 将接受任何一种形式。如果由于某种原因它不接受它,则问题可能出在传递给 Path.Combine 的路径上。如果是这样的话,我会用调试器检查它们,看看发生了什么。

于 2013-07-19T04:21:56.537 回答