【问题标题】:Physical File Path物理文件路径
【发布时间】:2009-11-03 05:18:01
【问题描述】:

在 C# 中获取文件物理路径的最佳方法是什么?

更新:

我有一个文件名,但我不想硬编码它的路径,因为它可能会改变。我只知道它的相对路径,但不知道它的物理路径。

【问题讨论】:

  • 这里没有足够的信息来回答您的问题。你能更详细地解释你在寻找什么吗?
  • 我有一个文件名,但我不想硬编码它的路径,因为它可能会改变。我只知道它的相对路径,但不知道它的物理路径。
  • +1 给@Marc Gravell 和@Mitchell Petrotta。自 Beta 版以来,我一直在 .Net 中进行开发,而且我从未遇到过 System.IO.Path 对象。每天都在谈论学习新事物,我应该在几年前就知道这一点。

标签: c# file-io


【解决方案1】:

对于常规应用,Path.GetFullPath(path) 将返回此信息。如果这是网络,那么 MapPath 就是您想要的(例如,Server.MapPath("~/foo/bar"))。

Re cmets;试试HttpContext.Current.Server.MapPath(...);在没有HttpServerUtility (cmets) 的情况下,请尝试VirtualPathUtility.ToAbsolute

【讨论】:

  • 我无法使用 MapPath,因为 HttpServerUtility 的构造函数是内部的 :(
【解决方案2】:

如果你正在寻找一个文件的绝对路径,你需要System.IO.Path.GetFullPath:

返回绝对路径 指定路径字符串。

string path = "hello.txt";
Console.WriteLine(Path.GetFullPath(path));

在我看来,Path 类非常有用,但可悲的是没有得到充分利用。

【讨论】:

    【解决方案3】:

    问题还不清楚,但我会试一试……

    如果这是在 Asp.Net 中,您可以像在中一样使用Server.MapPath

    string fileLocation = Server.MapPath("~/SomeAppRelativeDirectory/SomeFile.ext");
    

    在 WinForms 或控制台应用程序中,如果文件是相对于可执行文件,您可以尝试使用 System.Environment.CurrentDirectory

    string fullPath = System.IO.Path.Combine(System.Environment.CurrentDirectory, "SomeAppRelativeDirectory/SomeFile.ext");
    

    【讨论】:

    • 那部分属于哪个程序集?
    • 两者都在标准类库中。第一个在 System.Web 中,下一个在 System.IO 中。
    • 我猜在 .NET 2.0 中不可用
    • @LB; MapPath 和大多数各种 Path 方法都可以追溯到 1.1
    猜你喜欢
    • 1970-01-01
    • 2020-11-13
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    • 1970-01-01
    • 2011-08-17
    相关资源
    最近更新 更多