有时,我们需要获取应用程序所在目录,以便实现某种功能(如上传下载功能)。获取目录的方式多种多样,也各有区别,在此归纳总结。
一、路径获取方法
1.AppDomain.CurrentDomain
// 获取程序的基目录。
System.AppDomain.CurrentDomain.BaseDirectory
// 获取和设置包括该应用程序的目录的名称。
System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase
2.System.Diagnostics.Process
// 获取模块的完整路径,包含文件名
System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
3.System.Environment
// 获取和设置当前目录(该进程从中启动的目录)的完全限定目录。
System.Environment.CurrentDirectory
4.System.IO.Directory
// 获取应用程序的当前工作目录,注意工作目录是可以改变的,而不限定在程序所在目录。
System.IO.Directory.GetCurrentDirectory()
E:\Programming\CoreTest\TestApi
5.其他特殊方法
WinForm
// 获取启动了应用程序的可执行文件的路径。
System.Windows.Forms.Application.StartupPath
// 获取启动了应用程序的可执行文件的路径及文件名
System.Windows.Forms.Application.ExecutablePath
AspNet
Hosting.HostingEnvironment
二、注意事项
1.在不同系统中,对字符串的处理可能会不一样,尤其是一些特殊字符,如"\"。所以拼接目录时,不要用字符串相加的方式,而是用方法接口,因为一般底层帮我们做了相关兼容。
例如:
不要使用 AppDomain.CurrentDomain.BaseDirectory + "\\myFiles";
而是使用 System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "myFiles");
2.根据发布部署方式和系统的不同,应用程序的具体目录也会不同。如,不一定会存在bin目录。所以,尽量不要自行拼接出已有的程序目录来使用,而是基于程序目录,自行创建目录使用。
三、总结
除了Directory方式,其他方法都是本应用程序域的路径。所以在使用中,因该尽量避免用Directory方式,除非本身有必须使用工作目录的需求
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结