2014-02-21 167 views
-1

我有一個類似的文件夾結構:C#從每個文件夾得到一個文本文件,

HostnameA-> DateTimeA-> hashdumpDateTimeA.txt

HostnameA-> DateTimeB-> hashdumpDateTimeB.txt

HostnameA-> DateTimeC-> hashdumpDateTimeC.txt

HostnameA-> DateTimeD-> hashdumpDateTimeD.txt

我的目標: 給定一個文件夾(在這種情況下HostnameA)我需要:

1)獲取每個hashdumpDateTime.txt文件名,並將其放置在一個字符串數組-Assumed文件總是存在於所有文件夾 -

2)使用陣列生成DropDownBox(I可以算出來)

3)當用戶選擇經由dropdownbox一個文件名時,將填滿我的datagridview與 內容(I可以算出來)

小號o我的問題真的是#1,因爲我不知道如何做一個循環來檢查來自HostnameA文件夾的文件名,我需要知道這是因爲這些文件名的DateTime更改

我真的很感激未來幫助,感謝和歡呼=)

回答

4

您可以使用Directory.GetFiles方法

var files = Directory.GetFiles("directoryPath","*.txt",SearchOption.AllDirectories) 

這會給你所有的文件names.If你,如果你想要的文件的完整路徑不想只是舉例名字,和一些其他屬性(如CreationTime,LastAccessTime)使用DirectoryInfo

DirectoryInfo di = new DirectoryInfo("path"); 
var files = di.GetFiles("*.txt",SearchOption.AllDirectories) 

這將返回一個FileInfo實例的數組。然後使用一個循環並按照你想要的文件進行操作。

+0

非常感謝!這裏是我想要嘗試的示例代碼,只需在記事本中進行編輯~~~~~~~ DirectoryInfo di = new DirectoryInfo(@「C:\ HostnameA \」); foreach(var fi in di.GetFiles(「Hashdump * .txt」,SearchOption.AllDirectories)) { Console.WriteLine(fi.Name); Console.WriteLine(fi.DirectoryName); Console.WriteLine(fi.Directory); Console.WriteLine(fi.CreationTime); } – Fukkatsu

0

您不需要知道DirectoryNameFileName的確切名稱,而是使用for循環和searchPattern代替。

private string[] GetFileNames(string folder) 
{ 
    var files = new List<string>(); 
    foreach (var dateTimeFolder in Directory.GetDirectories(folder)) 
    { 
     files.AddRange(Directory.GetFiles(dateTimeFolder, "hashdump*.txt")); 
    } 
    return files.ToArray(); 
} 
+0

This works too =)thanks man \ m / – Fukkatsu

相關問題