我想知道文件路径\和/文件路径之间的区别.我注意到有时路径包含/,有时它与之相关\.
如果有人能解释何时使用\和,那将是很好的/.
我正在寻找类似于Path.Combine方法的东西,这将有助于我正确地组合绝对路径和相对路径.例如,我想要
Path.Combine(@"c:\alpha\beta", @"..\gamma");
Run Code Online (Sandbox Code Playgroud)
产生c:\alpha\gamma的,而不是c:\alpha\..\gamma为Path.Combine做.有没有简单的方法来实现这一目标?不用说,我也希望周期.路径或多个..路径(例如..\..\)正常工作.
当我的ASP.NET站点使用文档(例如XML)时,我通常按如下方式加载文档:
Server.MapPath("~\Documents\MyDocument.xml")
Run Code Online (Sandbox Code Playgroud)
但是,我想将Documents文件夹移出网站文件夹,以便它现在是网站文件夹的兄弟.这将使文档维护变得更加容易.
但是,重写文档加载代码如下:
Server.MapPath("../../Documents/MyDocument.xml")
Run Code Online (Sandbox Code Playgroud)
导致ASP.NET抱怨它无法"退出顶级目录".
那么有人可以建议我如何相对指定网站文件夹之外的文件夹的位置?我真的不想为明显的部署原因指定绝对路径.
谢谢
大卫
可能重复:
如何从绝对路径获取相对路径
我目前正在使用它FolderBrowserDialog来返回绝对路径.我想改为获取相对于当前正在执行的目录的相对路径.鉴于FolderBrowserDialog只返回绝对路径,有没有办法将其转换为相对路径?
与C#中的PathCanonicalize相同的是什么?
使用:我需要好好猜测两个文件路径是否引用同一个文件(没有磁盘访问).我的典型方法是通过一些过滤器(如MakeAbsolute和PathCanonicalize)抛出它,然后进行不区分大小写的比较.
我试图使用linkLabel在Windows窗体中打开一个Help.txt文件.但无法从绝对路径转换为相对路径.
首先,我尝试获取exe文件的绝对路径.哪个是成功的.其次,只获取exe文件的目录.哪个是成功的.第三,我试图将目录与Help.txt文件的相对路径组合在一起.哪个不成功.
Exe文件位于 - >\Project\bin\Debug文件夹中,但Help.txt文件位于\ Project\Help文件夹中.这是我的代码: -
string exeFile = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath;
string Dir = Uri.UnescapeDataString(Path.GetDirectoryName(exeFile));
string path = Path.Combine(Dir, @"..\..\Help\Help.txt");
System.Diagnostics.Process.Start(path);
Run Code Online (Sandbox Code Playgroud)
我的路径的结果是 - >\Project\bin\Debug ....\Help\Help.txt
我有2个文件路径:
绝对:
/Content/assets2/otherfolder/another/this/
Run Code Online (Sandbox Code Playgroud)
相对的:
../../../../assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)
当我做Path.Combine(绝对,相对)我得到:
/Content/assets2/otherfolder/another/this/../../../../assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)
哪个工作正常,但我想得到的:
/Content/assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)
我需要一个正则表达式或代码,用相应的文件夹删除"../":
/Content/assets2/otherfolder/another/this/../../../../assets/img/logo.gif
/Content/assets2/otherfolder/another/../../../assets/img/logo.gif
/Content/assets2/otherfolder/../../assets/img/logo.gif
/Content/assets2/../assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)
最后进入:
/Content/assets/img/logo.gif
Run Code Online (Sandbox Code Playgroud)