繁体   English   中英

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

[英]Relative path to a file using C#

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

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

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

你只传递一个字符串。 你应该以相对路径的方式来处理它。

如果您使用此代码,它将默认支持相对路径。

如果提供的路径不明确, 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

你有一些一般选择:

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

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

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

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

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

  • 或者搜索传入的文件
  • 将Config目录的路径名附加到文件名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM