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

时间:2015-12-10 16:56:19

标签: c# arrays fileinfo directoryinfo

我正在尝试将完整的目录路径以及文件和扩展名插入到字符串数组中但我没有得到它,任何人都有更好的方法来执行此操作。

我正在使用嵌套的每个,因为主目录下面有一个目录列表" 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;
}

3 个答案:

答案 0 :(得分:1)

丹说,你肯定错过了一个&#34; *&#34;在您的过滤器中,但不止于此,您应该使用FullName属性,如下所示:

localFiles.Add(f.FullName);

此外(但这可能是一种理想的行为)您只浏览&#34; sourceFilePath&#34;的第一级子目录。 (也不包括该目录)。 并且在示例代码中,在&#34; catch&#34;之前有一个缺失的括号。 line(但我知道这只是你在这里粘贴的示例代码,而不是你真正的程序)。 我希望这会有所帮助。

答案 1 :(得分:0)

看起来你在GetFiles调用中错过了.twb之前的*。

答案 2 :(得分:0)

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

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