我有一个命令行程序,它将配置文件作为参数,即 C:\ myprogram.exe -c C:\ configFiles \ MyConfigFile.txt 。我希望能够这样做,这样我就不必输入配置文件的绝对路径了,所以我可以输入 C:\ myprogram.exe -c MyConfigFile.txt
我不太熟悉C#如何处理路径以了解是否或如何做到这一点。任何见解都表示赞赏。
答案 0 :(得分:12)
类似的东西:
string path = "MyConfigFile.txt";
string fullPath = System.IO.Path.GetFullPath(path);
如果配置文件在当前目录中。如果它们存储在标准文件夹中,您可以使用Path.Combine()
string basePath = "C:\Configs";
string file = "MyConfigFile.txt";
string fullPath = System.IO.Path.Combine(basePath, file);
答案 1 :(得分:4)
你只传递一个字符串。您可以通过相对路径来处理它。
如果您使用此代码,则默认情况下会支持相对路径。
如果提供的路径不明确, FileInfo
将首先尝试使用Environment.CurrentDirectory
中的路径。
var file = new FileInfo(args[1]); // args[1] can be a filename of a local file
Console.WriteLine(file.FullName); // Would show the full path to the file
答案 2 :(得分:2)
您有一些常规选择:
无论如何切片,用户必须指明目录的路径,无论是在配置文件中,输入相对路径,还是从不同目录中具有相同名称的文件列表中进行选择。
ANALOGY:您将教科书放在学校某处的储物柜中。你要求你的朋友从“储物柜”中取出这本书,而不是暗示可能是哪个储物柜。你应该等待很长时间,并最终得到50本类似的书。或者,提供关于可以存储书籍的走廊,储物柜组和/或储物柜号码的线索。线索的模糊性与响应时间和返回多种可能性的可能性直接相关。
答案 3 :(得分:0)
嗯,标准.NET类使用相对路径和绝对路径一样,因此,您可以毫无问题地使用它们。如果C:root是您的程序的工作目录,则可以使用c:\myprogram.exe -c configFiles\MyConfigFile.txt
,它将指向c:\configFiles\MyConfigFile.txt
。
答案 4 :(得分:0)
如果没有相对路径作为输入参数的一部分,您的应用程序将需要: