获取子目录文件并添加到字符串数组

本文关键字:字符串 数组 添加 子目录 文件 获取 | 更新日期: 2023-09-27 18:26:23

我正试图将完整的目录路径以及文件和扩展名插入到字符串数组中,但我没有得到,很可能有人有更好的方法来做到这一点。

我使用嵌套的for each,因为在主目录"directoryInfo"下面有一个目录列表,其中包含我要查找的文件。

string[] moveLocalFiles;
List<String> localFiles = new List<String>();
DirectoryInfo directoryInfo = new DirectoryInfo(sourceFilePath);            
try
{
    foreach (DirectoryInfo i in directoryInfo.GetDirectories())
    {                                       
       foreach(FileInfo f in i.GetFiles(".twb"))
       {
           localFiles.Add(f.ToString());
       }  

    moveLocalFiles = localFiles.ToArray();
    foreach (string filePath in moveLocalFiles)
    {
     //do something
    }
}
catch (Exception ex)
{
    throw ex;
}

获取子目录文件并添加到字符串数组

正如Dan所说,您的过滤器中肯定缺少一个"*",但除此之外,您还应该使用FullName属性,如下所示:

localFiles.Add(f.FullName);

此外(但这可能是所需的行为),您只浏览"sourceFilePath"的第一级子目录(也不包括该目录)。在示例代码中,在"catch"行之前也缺少一个括号(但我知道这只是您粘贴在这里的示例代码,而不是您真正的程序)。我希望这能有所帮助。

在GetFiles调用中,似乎缺少了.twb之前的一个*。

如果你想获得每个目录和文件的完整路径,你可以使用你自己的方法,只是稍微改变了一下:

foreach (DirectoryInfo i in directoryInfo.GetDirectories())
{                                       
    foreach (FileInfo f in i.GetFiles("*.twb")) //The * is a wildcard search for anything
    {
        localFiles.Add(f.FullName); //FullName returns the full path
    }
}

或者,您可以像这样使用System.IO.Directory类:

foreach (string i in Directory.GetDirectories("path to directory"))
{                                       
    foreach (string f in Directory.GetFiles(i, "*.twb")) //The * is a wildcard search for anything
    {
        localFiles.Add(f);
    }
}