簡體   English   中英

如何使用Path.GetFullPath在c#中獲取文件完整路徑

[英]How to get a file full path in c# with Path.GetFullPath

我試圖僅通過文件獲取文件的完整路徑 我曾嘗試使用:

string fullPath = Path.GetFullPath("excelTest");

但它返回給我一個不正確的路徑(與我的項目路徑有關)。

我在這里的某個地方讀到了一條評論,上面寫着要執行以下操作:

        var dir = Environment.SpecialFolder.ProgramFilesX86;
        var path = Path.Combine(dir.ToString(), "excelTest.csv");

但我不知道文件保存在哪里,因此我不知道它的環境。

有人可以幫助我如何僅通過文件名獲取文件的完整路徑嗎?

第一個片段(使用Path.GetFullPath )正是您想要的。 因為程序 EXE 文件位於 project\\Bin\\Debug 路徑中​​,因此它是“當前目錄”,所以它返回一些與您的項目路徑有關的內容。

如果要搜索驅動器上的文件,可以使用Directory.GetFiles ,它將在給定名稱模式的目錄中遞歸搜索文件。

這將遞歸返回所有 xml 文件:

 var allFiles = Directory.GetFiles(path, "*.xml", SearchOption.AllDirectories);

https://stackoverflow.com/a/9830162/2196124

您正在尋找的是Directory.GetFiles() ,您可以在此處閱讀。 它的要點是,您將傳入文件路徑和文件名,然后您將獲得一個字符串數組。 在這種情況下,您可以假設最高級別為C:\\ 需要注意的是,如果沒有找到,字符串數組將為空。

我猜您正在嘗試查找文件(例如在 Windows 搜索中),對嗎?

我會研究這個問題- 你會找到所有文件名中包含該字符串的文件,然后你可以返回完整的文件路徑。

var fileList = new DirectoryInfo(@"c:\").GetFiles("*excelTest*", SearchOption.AllDirectories);

然后只需使用 foreach 來進行操作,例如

foreach(string file in fileList)
{
// MessageBox.Show(file);
}

您已將相對文件名傳遞給 Path.GetFullPath。 微軟文檔指出:

如果 path 是相對路徑,則 GetFullPath 返回一個完全限定的路徑,該路徑可以基於當前驅動器和當前目錄。 當前驅動器和當前目錄可以在應用程序執行時隨時更改。 因此,無法提前確定此重載返回的路徑。

除非每次調用該函數時當前目錄都相同,否則無法從相對路徑獲得相同的完整路徑名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM