2016-08-01 178 views
0

我試圖通過名稱獲取完整路徑文件。 我曾嘗試使用:如何在C#中使用Path.GetFullPath獲取文件完整路徑

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

但它返回我一個不正確的路徑(的東西與我的項目路徑)。

我看了這裏的某個地方評論它說做到以下幾點:

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

,但我不知道在哪裏保存文件,所以我不知道它的環境。

有人可以幫助我如何獲得文件的完整路徑只有它的名字?

+2

那麼,如果你不知道文件在哪裏,API應該如何知道?你在尋找一個算法來在你的磁盤上遞歸搜索文件嗎? –

+0

如果系統中有兩個具有相同名稱的文件,您希望發生什麼?你描述的GetFullPath()在你的項目路徑中返回一個文件路徑的問題是一個很好的例子,它在本地找到了一些東西,並且很滿意。 – LordWilmore

回答

0

我想你試圖找到文件(如在Windows搜索),對不對?

我想看看this question - 你會發現所有文件的文件名都是那個字符串,從那裏你可以返回完整的文件路徑。

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

然後只用foreach來操作,例如

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

第一個片段(與Path.GetFullPath)完全是你想要的。它會返回項目路徑中的內容,因爲程序EXE文件位於項目\ Bin \ Debug路徑中,因此它是「當前目錄」。

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

這遞歸返回所有XML的文件:

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

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

0

你在找什麼是Directory.GetFiles(),你可以閱讀它here。它的要點是,你會傳入文件路徑和文件名,並且你會得到一個字符串數組。在這種情況下,您可以假設頂級C:\。應該注意的是,如果沒有找到,字符串數組將是空的。

相關問題