C#中绝对路径的相对路径?

And*_*ers 74 c# relative-path absolute-path

我有包含图像的href文件路径的xml文件(例如"....\images\image.jpg").hrefs包含相对路径.现在,我需要将hrefs提取到图像并将它们转换为文件系统中的绝对路径.

我知道GetFullPath方法,但我尝试了它,它似乎只能在CurrentDirectory集合中工作,它似乎是C:所以我不知道如何使用它.而且,我有包含hrefs和href相对路径的文件的绝对路径,所以因为我根据绝对路径计算".... \"部分的数量是一个简单的任务.包含文件,似乎必须有一种方法来以编程方式执行此操作.

我希望有一些我不知道的简单方法!有任何想法吗?

cah*_*yaz 121

string exactPath = Path.GetFullPath(yourRelativePath);
Run Code Online (Sandbox Code Playgroud)

作品

  • 这是对"如何将相对路径转换为绝对路径?"这一问题的正确答案.OP只是想知道"你如何一起坚持一条路径?"的答案. (12认同)
  • 起初我认为这不起作用,但它确实起作用了。如果你输入你的相对路径 C:\test\A\..\B\test.txt 输出将是 C:\test\B\test.txt (2认同)

Pao*_*olo 93

假设您知道XML文件所使用的真实目录,请使用Path.Combine,例如

var absolute_path = Path.Combine(directoryXmlLivesIn, "..\images\image.jpg");
Run Code Online (Sandbox Code Playgroud)

如果你想回到任何..折叠的完整路径,那么你可以使用:

Path.GetFullPath((new Uri(absolute_path)).LocalPath);
Run Code Online (Sandbox Code Playgroud)

  • 通过一些实验,看起来`(new Uri(absolute_path)).LocalPath`与`Path.GetFullPath(absolute_path)`做同样的事情,所以一个或另一个就足够了. (9认同)

Dav*_*ell 30

这很有效.

var s = Path.Combine(@"C:\some\location", @"..\other\file.txt");
s = Path.GetFullPath(s);
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 6

您可以将 Path.Combine 与“基本”路径一起使用,然后在结果上使用 GetFullPath。

string absPathContainingHrefs = GetAbsolutePath(); // Get the "base" path
string fullPath = Path.Combine(absPathContainingHrefs, @"..\..\images\image.jpg");
fullPath = Path.GetFullPath(fullPath);  // Will turn the above into a proper abs path
Run Code Online (Sandbox Code Playgroud)


Tia*_*Lin 5

你试过Server.MapPath方法吗?这是一个例子

string relative_path = "/Content/img/Upload/Reports/59/44A0446_59-1.jpg";
string absolute_path = Server.MapPath(relative_path);
//will be c:\users\.....\Content\img\Upload\Reports\59\44A0446_59-1.jpg
Run Code Online (Sandbox Code Playgroud)


Moh*_*MFa 5

将相对路径转换为绝对路径的最佳方法!

string absolutePath = System.IO.Path.GetFullPath(relativePath);
Run Code Online (Sandbox Code Playgroud)