在C#中获取文件物理路径的最佳方法是什么?
更新:
我有一个文件名,但我不想硬编码它的路径,因为它可能会改变。我只知道它的相对路径,但不知道它的物理路径。
答案 0 :(得分:10)
对于常规应用,Path.GetFullPath(path)
会返回此信息。如果这是网络,则MapPath
就是您想要的(例如,Server.MapPath("~/foo/bar")
)。
评论;试试HttpContext.Current.Server.MapPath(...)
;在没有HttpServerUtility
(评论)的情况下,请尝试VirtualPathUtility.ToAbsolute
。
答案 1 :(得分:5)
如果您正在寻找文件的绝对路径,则需要System.IO.Path.GetFullPath:
返回的绝对路径 指定的路径字符串。
string path = "hello.txt";
Console.WriteLine(Path.GetFullPath(path));
在我看来,Path
课程非常有用且可怜地使用不足。
答案 2 :(得分:3)
这个问题仍然不清楚,但我会小心......
如果是在Asp.Net中,您可以在
中使用Server.MapPathstring fileLocation = Server.MapPath("~/SomeAppRelativeDirectory/SomeFile.ext");
在WinForms或Console应用程序中,如果文件是相对于可执行文件的,则可以尝试使用System.Environment.CurrentDirectory 如在
string fullPath = System.IO.Path.Combine(System.Environment.CurrentDirectory, "SomeAppRelativeDirectory/SomeFile.ext");