使用C#的文件的相对路径

时间:2011-01-19 20:49:06

标签: c# .net programming-languages

我有一个命令行程序,它将配置文件作为参数,即 C:\ myprogram.exe -c C:\ configFiles \ MyConfigFile.txt 。我希望能够这样做,这样我就不必输入配置文件的绝对路径了,所以我可以输入 C:\ myprogram.exe -c MyConfigFile.txt

我不太熟悉C#如何处理路径以了解是否或如何做到这一点。任何见解都表示赞赏。

5 个答案:

答案 0 :(得分:12)

使用Path.GetFullPath()

类似的东西:

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)

您有一些常规选择:

  • 将目录路径存储在配置文件中(您说您不想这样做)
  • 让用户输入相对路径(.... \ MyFile.txt)
  • 以编程方式搜索与名称匹配的文件(非常慢且易于找到多个同名文件)
  • 假设数据文件位于执行目录

无论如何切片,用户必须指明目录的路径,无论是在配置文件中,输入相对路径,还是从不同目录中具有相同名称的文件列表中进行选择。

ANALOGY:您将教科书放在学校某处的储物柜中。你要求你的朋友从“储物柜”中取出这本书,而不是暗示可能是哪个储物柜。你应该等待很长时间,并最终得到50本类似的书。或者,提供关于可以存储书籍的走廊,储物柜组和/或储物柜号码的线索。线索的模糊性与响应时间和返回多种可能性的可能性直接相关。

答案 3 :(得分:0)

嗯,标准.NET类使用相对路径和绝对路径一样,因此,您可以毫无问题地使用它们。如果C:root是您的程序的工作目录,则可以使用c:\myprogram.exe -c configFiles\MyConfigFile.txt,它将指向c:\configFiles\MyConfigFile.txt

答案 4 :(得分:0)

如果没有相对路径作为输入参数的一部分,您的应用程序将需要:

  • 搜索
  • 中传递的文件
  • 将Config目录的路径名附加到文件名