将绝对路径转换为相对路径 C# [重复]

2024-05-09

可能的重复:
获取相对于当前工作目录的路径? https://stackoverflow.com/questions/703281/getting-path-relative-to-the-current-working-directory

我的 C# 代码包含一些从绝对路径到相对路径的图像,因此无论应用程序折叠位于何处,都可以找到该图像。

例如,我的代码中的路径(以及我的笔记本电脑中的图像路径)是

C:/something/res/images/image1.jpeg

我希望我的代码中的路径是

..../images/image1.jpeg 

因此它可以在文件夹所在的任何位置运行,无论文件夹的名称是什么C:分区等

我希望代码中的路径独立于应用程序文件夹位置,或者是否位于另一个分区中,只要它与解决方案的其余部分位于同一文件夹中即可。

我有这个代码:

 try 
 { 
     File.Delete("C:/JPD/SCRAT/Desktop/Project/Resources/images/image1.jpeg");
 } 
 catch (Exception) 
 { 
      MessageBox.Show("File not found:C:/Users/JPD/Desktop/Project/images/image1.jpeg");
  } 

此代码仅在文件和文件夹位于该特定路径(这也是代码的位置)中时运行,我希望该路径是相对的,因此无论我将整个文件夹(代码、文件等)放在何处,程序仍然会运行只要代码(位于项目文件夹下)与文件夹图像位于同一位置即可工作...我应该做什么?


相对路径基于运行应用程序的二进制文件。默认情况下,您的二进制文件将输出在[directory of your .csproj]/bin/调试。假设您想在与 .csproj 相同的级别创建图像文件夹。然后您可以使用相对路径“../../images/someImage.jpg”访问图像。

为了更好地感受这一点,请尝试以下测试:

1)创建一个新的视觉工作室示例项目,

2)创建与.csproj同级的images文件夹

3)将一些文件放入images文件夹中

4)将此示例代码放入您的主要方法中 -

    static void Main(string[] args)
    {
        Console.WriteLine(Directory.GetCurrentDirectory());
        foreach (string s in Directory.EnumerateFiles("../../images/"))
        {
            Console.WriteLine(s); 
        }
        Console.ReadLine(); // Just to keep the console from disappearing.
    }

您应该会看到在步骤 (3) 中放置的所有文件的相对路径。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将绝对路径转换为相对路径 C# [重复] 的相关文章

随机推荐