【问题标题】:C# get a textfile from EACH folder,C# 从每个文件夹中获取一个文本文件,
【发布时间】:2014-02-21 01:03:40
【问题描述】:

我有一个类似这样的文件夹结构:

主机名A->DateTimeA->hashdumpDateTimeA.txt

主机名A->DateTimeB->hashdumpDateTimeB.txt

HostnameA->DateTimeC->hashdumpDateTimeC.txt

主机名A->DateTimeD->hashdumpDateTimeD.txt

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

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

2) 使用数组生成DropDownBox(我能猜出来)

3) 当用户通过下拉框选择文件名时,它会用 内容(我可以弄清楚)

所以我的问题确实是 #1,因为我不知道如何循环检查来自 HostnameA 文件夹的文件名,我需要知道这一点,因为这些文件名的 DateTime 更改

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

【问题讨论】:

    标签: c# directory file-access


    【解决方案1】:

    你可以使用Directory.GetFiles方法

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

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

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

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

    【讨论】:

    • 非常感谢!这是我的示例代码,想尝试的人可以在记事本中编辑~~~~~~~ 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); }
    【解决方案2】:

    您无需知道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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 2020-09-05
      • 2023-03-24
      • 2018-12-14
      • 2018-08-06
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多