c# 获取当前路径
你希望在 C# 代码中获取程序运行时的当前目录路径,这是开发中非常常见的需求,不同的获取方式适用于不同场景,我会为你详细介绍几种常用方法并说明它们的核心区别。
常用的获取路径方法
以下是 C# 中获取当前目录 / 路径的几种主流方式,包含可直接运行的代码示例和详细解释:
1. 获取当前工作目录(可动态改变)
使用
Directory.GetCurrentDirectory() 或 Environment.CurrentDirectory,二者效果基本一致,获取的是程序的当前工作目录(默认是程序启动目录,但可通过代码修改)。using System; using System.IO; class Program { static void Main() { // 方法1:通过Directory类获取 string workDir1 = Directory.GetCurrentDirectory(); Console.WriteLine("当前工作目录(Directory):" + workDir1); // 方法2:通过Environment类获取 string workDir2 = Environment.CurrentDirectory; Console.WriteLine("当前工作目录(Environment):" + workDir2); } }
2. 获取程序集所在目录(推荐,稳定)
使用
AppDomain.CurrentDomain.BaseDirectory 是最推荐的方式,它获取的是程序集(exe/dll)所在的目录,路径稳定,不受工作目录变动影响。using System; class Program { static void Main() { // 程序集所在目录(稳定,推荐) string assemblyDir = AppDomain.CurrentDomain.BaseDirectory; Console.WriteLine("程序集所在目录:" + assemblyDir); } }
3. 获取程序集完整路径(含文件名)
如果需要精准定位当前执行的程序集文件(比如获取
xxx.exe的完整路径),可使用Assembly.GetExecutingAssembly().Location(需引用System.Reflection)。using System; using System.IO; using System.Reflection; class Program { static void Main() { // 获取程序集完整路径(含exe/dll文件名) string fullPath = Assembly.GetExecutingAssembly().Location; Console.WriteLine("程序集完整路径:" + fullPath); // 仅提取目录(结合Path类) string onlyDir = Path.GetDirectoryName(fullPath); Console.WriteLine("程序集所在目录:" + onlyDir); } }
4. WinForm 程序专用
如果是 Windows Forms 应用,可使用
Application.StartupPath获取程序启动目录(不含可执行文件名),需引用System.Windows.Forms。using System; using System.Windows.Forms; class MainForm : Form { public MainForm() { string startupPath = Application.StartupPath; MessageBox.Show("WinForm启动路径:" + startupPath); } }
总结
- 优先选择
AppDomain.CurrentDomain.BaseDirectory,它路径稳定,适配绝大多数读取程序自带文件的场景。 Directory.GetCurrentDirectory()易被修改,仅适合临时获取工作目录,不建议作为资源文件读取路径。- 如需获取程序集文件的完整路径,使用
Assembly.GetExecutingAssembly().Location,并通过Path.GetDirectoryName()提取目录。
本文来自博客园,作者:韩银剑,转载请注明原文链接:https://www.cnblogs.com/hyjrun/p/19512970

浙公网安备 33010602011771号