【问题标题】:main arguments change my default location主要参数改变了我的默认位置
【发布时间】:2013-04-08 00:01:17
【问题描述】:

当我将参数传递给Main 函数static void Main(string[] args) 时,我的应用程序的默认位置将更改为args[0] 包含的任何内容。

例如,我有一个文件“test.txt”与应用程序 exe 位于同一文件夹中。如果我打电话给File.Open("test.txt", FileMode.Open);,打开文件不会有任何问题。现在,如果我已将参数传递给Main,则调用File.Open("test.txt", FileMode.Open); 将在args[0] 的位置而不是从exe 位置查找文件“test.txt”。

假设我的 exe 位于C:\users\application.exe 并且args[0] 的字符串是D:\files\musicFile.Open("test.txt", FileMode.Open); 行将尝试打开文件D:\files\music\test.txt 而不是C:\users\test.txt

如何解决这个问题,以便我仍然可以访问文件“test.txt”?

【问题讨论】:

    标签: c# command-line-arguments main


    【解决方案1】:

    您正在使用相对路径
    但是,相对路径是相对于当前目录的,而不是你的 EXE 文件的位置。

    相反,您可以显式构建绝对路径:

    Path.Combine(Path.GetDirectory(typeof(Program).Assembly.Location), "test.txt")
    

    【讨论】:

    • 感谢 SLaks 的快速回复,这解决了我的问题,我也更好地了解了相对路径的工作原理。
    猜你喜欢
    • 2021-01-15
    • 2015-03-17
    • 1970-01-01
    • 2015-10-27
    • 2014-12-07
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多