簡體   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