2012-05-22 158 views
14

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

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

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

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

返回一个测试项目这条路(当LocalConstants.EMAIL_PATH="Emails"):

+0

你需要应用程序目录吗? –

+0

我将一个文本文件添加到我的项目中。我需要该目录 –

+0

项目根目录是我需要的 –

回答

25

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

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

此代码指向bin/Debug文件夹。 EMAIL_PATH在项目的根文件夹 –

+0

也许我的问题是我必须设置文本文件复制到输出。这是标准的事情吗? –

+1

@NickLaMarca:你指的是http://stackoverflow.com/a/857473/284240?也许,取决于你的确切要求。 –

1

您可以使用Environment.CurrentDirectory

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

供进一步阅读。

编辑*

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

会做相同,也许是更安全一点。

+0

指向windows system32文件夹 –

+0

它将指向您的工作目录。我只是在测试控制台应用程序上运行了一个演示程序,输出结果是:“c:\ users \ duane \ documents \ visual studio 2010 \ Projects \ EnvironmentDemo \ EnvironmentDemo \ bin \ Debug”,你可以发布你从这个属性中获得的字符串? – dtsg

+1

当前目录并不总是您的应用程序的目录。如果它是一个支持文件,那么假设这是不安全的。 –

0

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

相关问题