如何从两个不同的项目获取文件夹的亲戚

弗朗切斯科·博尼兹(Francesco Bonizzi)

我有两个项目和一个共享库,可从此文件夹加载图像: "C:/MainProject/Project1/Images/"

Project1的文件夹:("C:/MainProject/Project1/Files/Bin/x86/Debug"其中有project1.exe)

Project2的文件夹:("C:/MainProject/Project2/Bin/x86/Debug"其中有project2.exe)

当我调用共享库函数来加载图像时,我需要获取“ Images”文件夹的相对路径,因为我将从project1或project2调用该函数。另外,我还将MainProject移到其他计算机上,所以不能使用绝对路径。

在Project1中,我将执行以下操作:

Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName + @"\Images";

在Project2中,我将执行以下操作:

Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName + @"Project1\Images";

如何获得两个项目文件夹的相对路径?

视界

您可能想稍微测试一下此代码并使它更健壮,但是只要您不将其传递给UNC地址,它就应该起作用。它通过将路径拆分为目录名称并从左到右比较它们来工作。然后建立相对路径。

    public static string GetRelativePath(string sourcePath, string targetPath)
    {
        if (!Path.IsPathRooted(sourcePath)) throw new ArgumentException("Path must be absolute", "sourcePath");
        if (!Path.IsPathRooted(targetPath)) throw new ArgumentException("Path must be absolute", "targetPath");

        string[] sourceParts = sourcePath.Split(Path.DirectorySeparatorChar);
        string[] targetParts = targetPath.Split(Path.DirectorySeparatorChar);

        int n;
        for (n = 0; n < Math.Min(sourceParts.Length, targetParts.Length); n++ )
        {
            if (!string.Equals(sourceParts[n], targetParts[n], StringComparison.CurrentCultureIgnoreCase))
            {
                break;
            }
        }

        if (n == 0) throw new ApplicationException("Files must be on the same volume");
        string relativePath = new string('.', sourceParts.Length - n).Replace(".", ".." + Path.DirectorySeparatorChar);
        if (n <= targetParts.Length)
        {
            relativePath += string.Join(Path.DirectorySeparatorChar.ToString(), targetParts.Skip(n).ToArray());
        }

        return string.IsNullOrWhiteSpace(relativePath) ? "." : relativePath;
    }

代替使用Directory.GetCurrentDirectory,可以考虑使用Path.GetDirectory(Process.GetCurrentProcess()。MainModule.FileName)。您当前的目录可能与exe文件不同,这将破坏您的代码。MainModule.FileName直接指向您的exe文件的位置。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使两个不同的文件夹从一个文件夹获取资源?

来自分类Dev

如何同步两个不同系统中的两个文件夹

来自分类Dev

如何递归比较两个文件夹并生成不同文件和文件夹的列表?

来自分类Dev

如何比较两个不同文件夹中的文件并执行条件复制

来自分类Dev

Python - 如何在两个不同文件夹中一一比较文件

来自分类Dev

如何将路径分为两个不同的类别 - 是文件/是文件夹

来自分类Dev

两个不同文件夹的总和

来自分类Dev

两个不同文件夹中的两个不同的wordpress网站

来自分类Dev

如何将代码推送到两个不同的文件夹中?

来自分类Dev

如何递归比较两个不同文件夹中的用户和组?

来自分类Dev

如何将相同程序集的两个版本从两个不同的子文件夹加载到两个不同的域中?

来自分类Dev

如何获取路径名并删除最后两个文件夹名

来自分类Dev

如何在同一个项目/文件夹中使用两个gruntfile?

来自分类Dev

使用django在两个不同的文件夹中上传并重命名两个不同的文件?

来自分类Dev

如何读取文件夹并将新创建的文件移动到两个不同的网络位置

来自分类Dev

如何使用 Springboot 将 JSP 文件保存在两个或多个不同的文件夹中?

来自分类Dev

如何配置Nginx从两个不同的文件夹提供桌面版和移动版

来自分类Dev

如何在单个终端中运行两个不同文件夹的两个“ python manage.py runserver”命令

来自分类Dev

如何在PHP中一次从两个不同的文件夹中取消链接两个图像

来自分类Dev

在python中从两个不同的文件夹创建文本文件

来自分类Dev

制作一个循环,从两个文件夹中获取相同的名称对?

来自分类Dev

获取两个时间戳之间的文件夹中的文件

来自分类Dev

如何在Windows上将两个文件夹映射到另一个文件夹?

来自分类Dev

grunt-contrib-imagemin-拍摄两个不同文件夹的图像

来自分类Dev

301在不同域的两个文件夹之间重定向

来自分类Dev

合并两个具有不同文件夹名称的git分支

来自分类Dev

压缩两个相同的文件夹会得到不同的结果

来自分类Dev

.htaccess 重写以重定向两个不同的文件夹

来自分类Dev

Java - 两个类,名称相同,包相同,但在不同的文件夹中

Related 相关文章

  1. 1

    如何使两个不同的文件夹从一个文件夹获取资源?

  2. 2

    如何同步两个不同系统中的两个文件夹

  3. 3

    如何递归比较两个文件夹并生成不同文件和文件夹的列表?

  4. 4

    如何比较两个不同文件夹中的文件并执行条件复制

  5. 5

    Python - 如何在两个不同文件夹中一一比较文件

  6. 6

    如何将路径分为两个不同的类别 - 是文件/是文件夹

  7. 7

    两个不同文件夹的总和

  8. 8

    两个不同文件夹中的两个不同的wordpress网站

  9. 9

    如何将代码推送到两个不同的文件夹中?

  10. 10

    如何递归比较两个不同文件夹中的用户和组?

  11. 11

    如何将相同程序集的两个版本从两个不同的子文件夹加载到两个不同的域中?

  12. 12

    如何获取路径名并删除最后两个文件夹名

  13. 13

    如何在同一个项目/文件夹中使用两个gruntfile?

  14. 14

    使用django在两个不同的文件夹中上传并重命名两个不同的文件?

  15. 15

    如何读取文件夹并将新创建的文件移动到两个不同的网络位置

  16. 16

    如何使用 Springboot 将 JSP 文件保存在两个或多个不同的文件夹中?

  17. 17

    如何配置Nginx从两个不同的文件夹提供桌面版和移动版

  18. 18

    如何在单个终端中运行两个不同文件夹的两个“ python manage.py runserver”命令

  19. 19

    如何在PHP中一次从两个不同的文件夹中取消链接两个图像

  20. 20

    在python中从两个不同的文件夹创建文本文件

  21. 21

    制作一个循环,从两个文件夹中获取相同的名称对?

  22. 22

    获取两个时间戳之间的文件夹中的文件

  23. 23

    如何在Windows上将两个文件夹映射到另一个文件夹?

  24. 24

    grunt-contrib-imagemin-拍摄两个不同文件夹的图像

  25. 25

    301在不同域的两个文件夹之间重定向

  26. 26

    合并两个具有不同文件夹名称的git分支

  27. 27

    压缩两个相同的文件夹会得到不同的结果

  28. 28

    .htaccess 重写以重定向两个不同的文件夹

  29. 29

    Java - 两个类,名称相同,包相同,但在不同的文件夹中

热门标签

归档