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

Get Sub Directory Files and Add to String Array

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

我正在为每个文件使用嵌套目录,因为在主目录 "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;
}

您似乎在 GetFiles 调用中的 .twb 之前缺少 *。

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

localFiles.Add(f.FullName);

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

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

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 class:

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);
    }
}