C#从EACH文件夹中获取文本文件,

时间:2014-02-21 01:03:40

标签: c# directory file-access

我有一个与此类似的文件夹结构:

  

HostnameA-> DateTimeA-> hashdumpDateTimeA.txt

     

HostnameA-> DateTimeB-> hashdumpDateTimeB.txt

     

HostnameA-> DateTimeC-> hashdumpDateTimeC.txt

     

HostnameA-> DateTimeD-> hashdumpDateTimeD.txt

我的目标: 给定一个文件夹(在本例中为HostnameA),我需要:

1)获取每个hashdumpDateTime.txt文件名并将其放在一个String数组中 - 假设该文件始终存在于所有文件夹中 -

2)使用数组生成DropDownBox(我可以想出来)

3)当用户通过下拉框选择文件名时,它将用我的datagridview填充 内容(我可以想出来)

所以我的问题确实是#1,因为我不知道如何创建一个循环来检查来自HostnameA文件夹的文件名,我需要知道这个,因为这些文件名的DateTime发生了变化

我非常感谢未来的帮助,谢谢和欢呼=)

2 个答案:

答案 0 :(得分:4)

您可以使用Directory.GetFiles方法

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

这将为您提供所有文件名。如果您不想要名称,例如,如果您想要文件的完整路径,以及其他一些属性(如CreationTime,LastAccessTime),请使用DirectoryInfo class

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

这将返回一个FileInfo个实例的数组。然后使用循环并对文件执行所需的操作。

答案 1 :(得分: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();
}