编程时,由于需要,我们常将一些文件放在解决方案下的某个目录中,为了获取到该目录下文件,在C#中,我们常用的方法如网上所见,基本获得的是debug目录
取得WinForm应用程序的目录方法
1、Environment.CurrentDirectory.ToString();//获取或设置当前工作目录的完全限定路径
2、Application.StartupPath.ToString();//获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称
3、Directory.GetCurrentDirectory();//获取应用程序的当前工作目录
4、AppDomain.CurrentDomain.BaseDirectory;//获取基目录,它由程序集冲突解决程序用来探测程序集
5、AppDomain.CurrentDomain.SetupInformation.ApplicationBase;//获取或设置包含该应用程序的目录的名称
其中:以下两个方法可以获取执行文件名称
1、Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名。
2、Application.ExecutablePath;//获取启动了应用程序的可执行文件的路径,包括可执行文件的名称
3、System.IO.Path类中有一些获取路径的方法,可以在控制台程序或者WinForm中根据相对路径来获取绝对路径
=====================================================================================================================
上图是一个解决方案(GuidForm)的目录情况,之上提到的方法获得只是"debug"或者"debug",我的数据PB_COMMONDICS.mdb放到了GuidFormdata目录下,该如何获取呢?
可以这样:
using System.IO; //string dbstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + @"dataPB_COMMONDICS.mdb"; //string dbstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"E:ProjectsGuidFormGuidFormPB_COMMONDICS.mdb"; string dbstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName + @"dataPB_COMMONDICS.mdb";
没错,很简单,就是用 Parent属性;不过应该注意的是这种方法适合在调试解决方案文件时使用,如果.exe文件拷到了其他位置,这种方法就不行了。
http://www.cnblogs.com/bq-blog/archive/2012/09/01/2666394.html