C#使用相对路径检查文件的存在性

时间:2013-07-19 03:36:07

标签: c# io

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

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

1 个答案:

答案 0 :(得分: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。如果是这种情况,我会用调试器检查它们,看看发生了什么。