2017-02-27 161 views
-2

我需要找到該文件並返回文件的地址。我已經嘗試過了,但它不起作用。搜索所有目錄中的文件

你有什麼想法如何做到這一點?

我用這個代碼:

var files = new List<string>(); 
//@Stan R. suggested an improvement to handle floppy drives... 
//foreach (DriveInfo d in DriveInfo.GetDrives()) 
foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady == true)) 
{ 
    files.AddRange(Directory.GetFiles(d.RootDirectory.FullName, actualFile, SearchOption.AllDirectories)); 
} 
+1

由於'Directory.GetFiles' [返回文件的名稱(包括它們的路徑)...](https:/ *),所以不清楚你的意思是*「文件的地址」*和什麼* /msdn.microsoft.com/en-us/library/ms143316(v=vs.110).aspx) – Filburt

+0

我使用了上面放置的代碼。會發生什麼事是它不再向我返回名稱。我需要得到的地址(例如:C:/程序文件),但它不會離開我,並試圖把這個地方: 所有以前的代碼------ .GetPath 或類似的東西,但不會讓我,出現語法錯誤。 – Stiven

+0

如果您需要除名稱和路徑之外的其他屬性,則應使用[DirectoryInfo.GetFileSystemInfos](https://msdn.microsoft.com/zh-cn/library/dd383457(v = vs.110).aspx),它將返回[FileSystemInfo](https://msdn.microsoft.com/en-us/library/system.io.filesysteminfo(v = vs.110).aspx)對象而不是字符串。 – Filburt

回答

0

我剛剛創建了一個快速測試和Directory.GetFiles不會返回的整個路徑(你叫什麼地址)的文件。微軟文檔(https://msdn.microsoft.com/en-us/library/07wt70x2(v=vs.110).aspx)表示,它返回:

在指定的目錄,或一個空數組文件的全名(包括路徑)的數組,如果沒有文件被發現。

如果您仍然需要完整的FileInfo,你可以做這樣的事情......(有更優雅的方式,但這樣會得到你想要的,你想要的。)

var files = new List<string>(); 
foreach (DriveInfo d in DriveInfo.GetDrives().Where(x => x.IsReady == true)) 
{ 
    var matchingFiles = Directory.GetFiles(d.RootDirectory.FullName, actualFile, SearchOption.AllDirectories)); 
    foreach (var matchedFile in matchingFiles) 
    { 
     var fileInfo = new FileInfo(matchedFile); 

     // The newly created fileInfo will have everything you need, including path inside the FullName 
     files.Add(fileInfo.FullName); 
    } 
} 

我希望這有助於。

+0

完美,正是我所需要的。我知道FileInfo,但不知道如何做它返回文件路徑,我認爲「FullName」是別的。非常感謝。 – Stiven

+0

好吧,看起來我的代碼有問題。 但它不返回文件路徑,但Visual Studio項目是。該文件(目前「Bien.txt」)位於「本地磁盤C /程序文件」 並返回此路徑:C:\ Users \ Stiven \ Documents \ Visual Studio 2010 \ Projects \ SIAM第4階段項目\ bin \ Debug \ Bien.txt與「FullName」 – Stiven

+0

我正在使用此代碼: – Stiven