C# 使用相对路径检查文件是否存在

标签 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

最佳答案

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 的路径。如果是这样,我会用调试器检查它们,看看发生了什么。

关于C# 使用相对路径检查文件是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17737707/

相关文章:

c# - LINQ 相交,多个列表,一些为空

c# - 如何在运行时从代码隐藏更改 CSS 键的值?

java - 为什么InputStream类可以被实例化呢?不是抽象类吗?

python - 使用 ndimage.binary_fill_holes 填充形状

c# - mscorlib 5.0.5.0 中缺少 System.Security.Cryptography.RSA

javascript - 如何转换为 json 特定类 c# ?我有错误

c# - 如何使类通用以在c#中传递动态属性类

python - ID 的设置项目

java - 如何在java中模拟键盘按下?

Java:查找最新报告并输出到屏幕