【问题标题】:Get Sub Directory Files and Add to String Array获取子目录文件并添加到字符串数组
【发布时间】:2015-12-10 16:56:19
【问题描述】:

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

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

【问题讨论】:

  • 如果您throw ex;,您将丢失堆栈跟踪。最好直接throw;,除非这种行为是有意的。
  • @TheLethalCoder 我会记住这一点的 :)

标签: c# arrays fileinfo directoryinfo


【解决方案1】:

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

localFiles.Add(f.FullName);

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

【讨论】:

  • 感谢您为我提供的 FullName 属性。此外,此目录只有一层可查看,并且始终存在。谢谢你指出这一点。基本上文件夹结构总是一样的,第一层子目录中总会有一个文件。
【解决方案2】:

看起来您在 GetFiles 调用中在 .twb 之前缺少一个 *。

【讨论】:

  • 这实际上是有道理的。我无法获取这些文件。但是,它仍然只返回文件名而不是路径和文件名。
【解决方案3】:

如果您想获取每个目录和文件的完整路径,您可以使用您自己的方法,只需稍作改动:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多