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

我尝试了System.Windows.Forms.Application.StartupPath,但这似乎是错误的方式。

什么好主意吗?


当前回答

1.

Directory.GetCurrentDirectory();

2.

Thread.GetDomain().BaseDirectory

3.

Environment.CurrentDirectory

其他回答

试试这个:

System.Environment.CurrentDirectory

这段代码以字符串类型创建了应用程序目录的路径

string path="";
path=System.AppContext.BaseDirectory;

祝你好运

1.

Directory.GetCurrentDirectory();

2.

Thread.GetDomain().BaseDirectory

3.

Environment.CurrentDirectory

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

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

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

更新: 我修改了快捷方式属性,将“Start In:”字段更改为C:\temp3。这导致了以下输出:

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

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

如果你想要项目文件夹的路径,你也可以这样做:

        DirectoryInfo di = new DirectoryInfo(".");
       //OR 
        DirectoryInfo di = new DirectoryInfo("../../../");

        Console.WriteLine(di.FullName);

结果: D: \开发\ c# \ ProjectFolder \ ProjectFolder \