C#获取⽂件路径或者⽂件夹路径的⽅法
⼀、获取当前⽂件路径
1.System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
获取模块的完整路径,包括⽂件名。获取得到的是Module的⽂件名,如果在VS2008的调试环境中,获取的是 [程序名].的完整⽂件名。
例如:System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName = C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\
(本例包括以下各个⽰例均为在本⼈电脑下操作得到,其中C:\\Users\\zhzhx\\Documents为“我的⽂档”⽂件夹)
2.System.Environment.CurrentDirectory
获取和设置当前⽬录(该进程从中启动的⽬录)的完全限定⽬录。
例如:System.Environment.CurrentDirectory =  C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug
3.System.IO.Directory.GetCurrentDirectory()
获取应⽤程序的当前⼯作⽬录。
例如:System.IO.Directory.GetCurrentDirectory() =  C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug
其中,2和3这两个⽅法获得的路径是⼀样的,获得的是当前路径,这个路径不⼀定是程序所在的路径。任何会改变当前路径的⽅法都会改变它,例如:OpenFileDialog每换⼀次⽬录就会改变它。因此,⽤这两个⽅法获取程序路径并不可靠。
4. System.AppDomain.CurrentDomain.BaseDirectory
获取当前 Thread 的当前应⽤程序域的基⽬录,它由程序集冲突解决程序⽤来探测程序集。
例如:System.AppDomain.CurrentDomain.BaseDirectory = C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\
5. System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
获取和设置包括该应⽤程序的⽬录的名称。
例如:System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase = C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\
其中,4和5这两个⽅法是可靠的获取程序路径的⽅法。返回的路径最末以"\"结尾。可以⽅便的在后⾯加⼊任何Path。当然就算没有也可以
⽤Path.Combine来合并路径以获得想要的路径。
6. System.Windows.Forms.Application.StartupPath
获取启动了应⽤程序的可执⾏⽂件的路径,不包括可执⾏⽂件的名称。
例如:System.Windows.Forms.Application.StartupPath = C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug
这个⽅法也是可靠的获取程序路径的⽅法。不过返回的路径最末并没有"\"结尾。另外因为是Forms命名空间的。因此如果使⽤WPF还是不⽤的好。
7.System.Windows.Forms.Application.ExecutablePath
获取启动了应⽤程序的可执⾏⽂件的路径及⽂件名。
例如:System.Windows.Forms.Application.ExecutablePath = C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\
这个⽅法获取的是执⾏程序的完整⽂件名。是最可靠的⽅式,只需要去掉程序⽂件名就可以获得路径。
8.System.Threading.Thread.GetDomain().BaseDirectory
获取当前应⽤程序所在⽬录的路径,最后包含“\”。
System.Threading.Thread.GetDomain().BaseDirectory = C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\
9.this.GetType().Assembly.Location
获取当前进程的完整路径,包含⽂件名(进程名)。
this.GetType().Assembly.Location = C:\Users\zhzhx\Documents\Visual Studio
2010\Projects\WindowsFormsApplication1\WindowsFormsApplication1\bin\
⼆、获取系统特殊⽂件夹路径
System.Environment.GetFolderPath(SpecialFolder)
例如:
System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) = C:\Users\zhzhx\Desktop //逻辑桌⾯,⽽不是物理⽂件系统位置。System.Environment.GetFolderPath(Environment.SpecialFolder.Programs) = C:\Users\zhzhx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs //包含⽤户程序组的⽬录。
System.Environment.GetFolderPath(Environment.SpecialFolder.Personal) = C:\Users\zhzhx\Documents //⽤作⽂档的公共储存库的⽬录。System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) = C:\Users\zhzhx\Documents // “我的⽂档”⽂件夹。
以下不再⼀⼀叙述,同上⾯所⽰,只是写出各个Environment.SpecialFolder后缀名所对应的⽂件夹
Favorites,//⽤作⽤户收藏夹项的公共储存库的⽬录。
Startup,//对应于⽤户的“启动”程序组的⽬录。
Favorites,//⽤作⽤户收藏夹项的公共储存库的⽬录。
Startup,//对应于⽤户的“启动”程序组的⽬录。
Recent, //包含⽤户最近使⽤过的⽂档的⽬录。
SendTo ,//包含“发送”菜单项的⽬录。
StartMenu ,//包含“开始”菜单项的⽬录。
MyMusic ,//“我的⾳乐”⽂件夹。
MyVideos , //⽂件系统⽬录,充当属于某个⽤户的视频的存储库。
DesktopDirectory , //⽤于物理上存储桌⾯上的⽂件对象的⽬录。
MyComputer ,//“我的电脑”⽂件夹。
NetworkShortcuts ,//⽂件系统⽬录,包含“⽹上邻居”虚拟⽂件夹中可能存在的链接对象。
Fonts ,//包含字体的虚拟⽂件夹。
Templates ,//⽤作⽂档模板的公共储存库的⽬录。
CommonStartMenu , //⽂件系统⽬录,包含在所有⽤户的“开始”菜单上都出现的程序和⽂件夹。此特殊⽂件夹仅对 Windows NT 系统有效。
CommonPrograms , //    存放多个应⽤程序共享的组件的⽂件夹。此特殊⽂件夹仅对 Windows NT、Windows 2000 和 Windows XP 系统有效。
CommonStartup ,//⽂件系统⽬录,包含在所有⽤户的“启动”⽂件夹中都出现的程序。此特殊⽂件夹仅
对 Windows NT 系统有效。CommonDesktopDirectory , //⽂件系统⽬录,包含在所有⽤户桌⾯上出现的⽂件和⽂件夹。此特殊⽂件夹仅对 Windows NT 系统有效。ApplicationData ,// ⽬录,它⽤作当前漫游⽤户的应⽤程序特定数据的公共储存库。
PrinterShortcuts ,//⽂件系统⽬录,包含“打印机”虚拟⽂件夹中可能存在的链接对象。
LocalApplicationData ,// ⽬录,它⽤作当前⾮漫游⽤户使⽤的应⽤程序特定数据的公共储存库。
InternetCache ,//⽤作 Internet 临时⽂件的公共储存库的⽬录。
Cookies ,//⽤作 Internet Cookie 的公共储存库的⽬录。
History ,//⽤作 Internet 历史记录项的公共储存库的⽬录。
CommonApplicationData ,//⽬录,它⽤作所有⽤户使⽤的应⽤程序特定数据的公共储存库。
Windows ,//Windows ⽬录或 SYSROOT。它与 %windir% 或 %SYSTEMROOT% 环境变量相对应。
System ,//“System”⽬录。
ProgramFiles ,// “Program files”⽬录。
MyPictures ,//“我的图⽚”⽂件夹。
UserProfile ,//    ⽤户的配置⽂件⽂件夹。应⽤程序不应在此级别上创建⽂件或⽂件夹;它们应将其数据放在
System.Environment.SpecialFolder.ApplicationData所引⽤的位置之下。
SystemX86 ,//Windows“System”⽂件夹。
ProgramFilesX86 ,//“Program Files”⽂件夹。
CommonProgramFiles ,//⽤于应⽤程序间共享的组件的⽬录。
CommonProgramFilesX86 ,// “Program Files”⽂件夹。
CommonTemplates ,//⽂件系统⽬录,包含所有⽤户都可以使⽤的模板。此特殊⽂件夹仅对 Windows NT 系统有效。
CommonDocuments ,//⽂件系统⽬录,包含所有⽤户共有的⽂档。此特殊⽂件夹仅对装有 Shfolder.dll 的 Windows NT 系统、Windows 95和 Windows98 系统有效。
CommonAdminTools ,//⽂件系统⽬录,包含计算机所有⽤户的管理⼯具。
AdminTools ,//⽂件系统⽬录,⽤于存储各个⽤户的管理⼯具。Microsoft Management Console (MMC) 会将⾃定义的控制台保存在此⽬录中,并且此⽬录将随⽤户⼀起漫游。
CommonMusic , //⽂件系统⽬录,充当所有⽤户共有的⾳乐⽂件的存储库。
CommonPictures ,//⽂件系统⽬录,充当所有⽤户共有的图像⽂件的存储库。
CommonVideos ,//⽂件系统⽬录,充当所有⽤户共有的视频⽂件的存储库。
Resources , //⽂件系统⽬录,包含资源数据。
LocalizedResources ,//⽂件系统⽬录,包含本地化资源数据。
CommonOemLinks ,//为了实现向后兼容,Windows Vista 中可以识别此值,但该特殊⽂件夹本⾝已不再使⽤。
CDBurning ,//⽂件系统⽬录,充当等待写⼊ CD 的⽂件的临时区域。博客为什么没人用了
三、操作环境变量
利⽤System.Environment.GetEnvironmentVariable()⽅法可以很⽅便地取得系统环境变量。
例如:
System.Environment.GetEnvironmentVariable("windir") = C:\Windows
System.Environment.GetEnvironmentVariable("INCLUDE") = C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\include\
(本例在本⼈电脑上未能实现,路径为⽹上别⼈的博客上的路径)
System.Environment.GetEnvironmentVariable("TMP") = C:\Users\zhzhx\AppData\Local\Temp
System.Environment.GetEnvironmentVariable("TEMP") = C:\Users\zhzhx\AppData\Local\Temp
System.Environment.GetEnvironmentVariable("Path") = C:\Program Files\AMD
APP\bin\x86;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program
Files\ATI Technologies\ATI.ACE\Core-Static;
四、获得Web应⽤程序的根⽬录⽅法
1、HttpRuntime.AppDomainAppPath.ToString()
获取承载在当前应⽤程序域中的应⽤程序⽬录的物理驱动器路径。⽤于App_Data中获取。
2.Server.MapPath("") 或者 Server.MapPath("~/")
返回与Web服务器上的指定的虚拟路径相对的物理⽂件路径。
3.Request.ApplicationPath
获取服务器上ASP.NET应⽤程序的虚拟应⽤程序根⽬录。