【问题标题】:Get File Path of A File In Your Current Project获取当前项目中文件的文件路径
【发布时间】:2012-05-22 14:48:49
【问题描述】:

如何以编程方式获取项目中文件的文件路径?

 string fileContent = File.ReadAllText(LocalConstants.EMAIL_PATH);

我作为文本文件添加到项目中的 EMAIL_PATH。这行代码会引发异常,因为默认情况下它出于某种原因在 system32 文件夹中查找。我需要将其设置为项目目录。

【问题讨论】:

  • 需要应用目录吗?
  • 我将一个文本文件添加到我的项目中。我需要那个目录
  • 项目根目录就是我需要的
  • 您是否尝试将 txt 文件嵌入到您的可执行文件中?

标签: c#


【解决方案1】:

您可以使用Path.CombineAppDomain.CurrentDomain.BaseDirectory

string fileName = "SampleFile.txt";
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, LocalConstants.EMAIL_PATH, fileName);

在调试模式下的测试项目中返回此路径(LocalConstants.EMAIL_PATH="Emails" 时):

C:\****\****\Documents\Visual Studio 2010\Projects\WindowsApplication1\WindowsFormsApplication1\bin\Debug\Emails\SampleFile.txt

【讨论】:

  • 此代码指向 bin/Debug 文件夹。 EMAIL_PATH 在项目的根文件夹中
  • 也许我的问题是我必须设置要复制到输出的文本文件。这是标准的做法吗?
  • @NickLaMarca:你指的是stackoverflow.com/a/857473/284240?也许,取决于您的确切要求。
【解决方案2】:

你可以使用Environment.CurrentDirectory

见:http://msdn.microsoft.com/en-us/library/system.environment.currentdirectory.aspx

供进一步阅读。

编辑*

string temp = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);

也会这样做,而且可能更安全一些。

【讨论】:

  • 它将指向您的工作目录所在的位置。我刚刚在一个测试控制台应用程序上运行了一个演示,输出是:“c:\users\duane\documents\visual studio 2010\Projects\EnvironmentDemo\EnvironmentDemo\bin\Debug”,你能发布你从这个属性得到的字符串吗?
  • 当前目录并不总是应用程序的目录。如果它是一个支持文件,那么假设它是不安全的。
  • 不正确!这是当前的工作目录,而不是为您的项目提供服务的目录。
【解决方案3】:

这对我有用 System.AppDomain.CurrentDomain.BaseDirectory.ToString()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多