获取当前文件夹路径我想创建一个转换文件的程序。我希望用户能够将可执行文件放在任何目录中,并在执行该程序时(双击.exe)我希望程序处理当前文件夹中exe文件所在的所有文件。程序如何确定当前执行的路径?我试过,System.Windows.Forms.Application.StartupPath但这似乎是错误的方式。有任何想法吗?
3 回答
Qyouu
TA贡献1786条经验 获得超11个赞
你应该不使用Directory.GetCurrentDirectory()
你的情况,当前目录可以从执行文件夹不同,尤其是当你通过一个快捷方式执行程序。
最好Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
用于您的目的。这将返回当前正在执行的程序集所在的路径名。
虽然我建议的方法允许你区分正在执行的程序集,入口程序集或任何其他已加载的程序集,正如SonerGönül在他的回答中所说,
System.IO.Path.GetDirectoryName(Application.ExecutablePath);
也可能就足够了。这等于
System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
牛魔王的故事
TA贡献1830条经验 获得超3个赞
我用以下代码创建了一个简单的控制台应用程序:
Console.WriteLine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));Console.WriteLine(System.AppDomain.CurrentDomain.BaseDirectory);Console.WriteLine(System.Environment.CurrentDirectory);Console.WriteLine(System.IO.Directory.GetCurrentDirectory());Console.WriteLine(Environment.CurrentDirectory);
我将生成的可执行文件复制到C:\temp2
。然后我在该可执行文件中放置了一个快捷方式C:\temp3
,并运行它(一次来自exe本身,一次来自快捷方式)。它两次都给出了以下输出:
C:\temp2 C:\temp2\ C:\temp2 C:\temp2 C:\temp2
虽然我肯定必须有一些蠢货理由来解释为什么有五种不同的方法几乎完全相同的东西,我当然不知道它是什么。然而,在大多数情况下,您可以自由选择您喜欢的任何一种情况。
更新: 我修改了快捷方式属性,将“开始于:”字段更改为C:\temp3
。这导致以下输出:
C:\temp2 C:\temp2\ C:\temp3 C:\temp3 C:\temp3
......至少展示了不同方法之间的一些区别。
- 3 回答
- 0 关注
- 516 浏览
添加回答
举报
0/150
提交
取消