提问者:小点点

获取当前文件夹路径


我想创建一个转换文件的程序。我希望用户能够将可执行文件放置在任何目录中,并且在执行该程序时(双击。exe),我希望该程序处理存在该exe文件的当前文件夹中的所有文件。程序如何确定当前执行的路径?

我尝试了,但这似乎是错误的方式。

有什么想法吗?


共3个答案

匿名用户

在您的情况下,不应使用,因为当前目录可能与执行文件夹不同,特别是当您通过快捷方式执行程序时。

最好使用。这将返回当前执行程序集所在的路径名。

虽然我建议的方法允许您区分执行程序集,入口程序集或任何其他加载的程序集(正如Soner GNL在他的回答中所说的那样),

System.IO.Path.GetDirectoryName(Application.ExecutablePath);

也可能足够了。这将等于

System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

匿名用户

System.AppDomain.CurrentDomain.BaseDirectory

这将给出应用程序的运行目录。这甚至适用于web应用程序。然后你就可以拿到你的文件了。

匿名用户

我创建了一个简单的控制台应用程序,代码如下:

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);

我将得到的可执行文件复制到。然后,我在中放置了该可执行文件的快捷方式,并运行它(一次从exe本身运行,一次从快捷方式运行)。它两次都给出了以下输出:

C:\temp2
C:\temp2\
C:\temp2
C:\temp2
C:\temp2

虽然我确信一定有一些荒谬的理由来解释为什么有五种不同的方法来做几乎完全相同的事情,但我肯定不知道它是什么。然而,似乎在大多数情况下,你可以自由选择你喜欢的任何一个。

更新:我修改了快捷方式属性,将“start in:”字段更改为。这产生了以下产出:

C:\temp2
C:\temp2\
C:\temp3
C:\temp3
C:\temp3

。。。这至少说明了不同方法之间的一些区别。