【问题标题】:How to get files in the subfolders too from directory如何从目录中获取子文件夹中的文件
【发布时间】:2012-07-31 07:37:28
【问题描述】:

您好,我必须从目录中的指定路径获取文件。这是我写的方法,但我没有从子文件夹中获取文件。

Private void getfiles(){
Directoryinfo info = new Directoryinfo(configurationmanager.appsettings["Targetroot"].tostring ());
if (info.exists){
     Gvfiles.datasource = info.GetFiles();
     Gvfiles.databind();
   }
}

【问题讨论】:

  • 我们需要更多细节 - 你得到了什么结果?
  • 您提供的代码应该可以正常工作检查MSDN article
  • 在我的代码中,我得到第一个文件夹中的文件,我想要放置在第一个文件夹中的文件夹中的文件。也是

标签: c# asp.net directory


【解决方案1】:

您需要包含 SearchOption.AllDirectories。

例子:

info.GetFiles("*", SearchOption.AllDirectories);

参考: http://msdn.microsoft.com/en-us/library/ms143327(v=vs.80).aspx

并且: http://msdn.microsoft.com/en-us/library/ms143448(v=vs.80).aspx

【讨论】:

    【解决方案2】:

    这将返回(直接)子目录的数组:

    System.IO.DirectoryInfo ParentDirectory = new System.IO.DirectoryInfo(ParentPath);
    System.IO.DirectoryInfo[] DirectoryArr = ParentDirectory.GetDirectories();
    

    我相信你可以找到一种方法来适应你的喜好。

    【讨论】:

      【解决方案3】:
      DirectoryInfo info = new   DrectoryInfo(configurationmanager.appsettings["Targetroot"].tostring ());
      //FileInfo[] _files = info.GetFiles("You could set a search pattern");
      //FileInfo[] _files = info.GetFiles("*.aspx");
      FileInfo[] _files = info.GetFiles();
      Gvfiles.datasource = _files;
      Gvfiles.databind();
      

      或:

      DirectoryInfo info = new DirectoryInfo(Server.MapPath("/"));
      DirectoryInfo[] _info = info.GetDirectories();
      for (int i = 0; i < _info.Length; i++)
      {
      FileInfo[] files = _info[i].GetFiles("search pattern");
      Gvfiles.datasource = files;
      Gvfiles.databind();
      }
      

      【讨论】:

      • 感谢您的评论。但是这段代码不会从第一个文件夹内的文件夹中获取文件,实际上这就像我的代码
      • 您可以在 directoryinfo(YourPath) 中设置路径。试试 Server.MapPath
      【解决方案4】:
      private List<String> DirSearch(string sDir)
      {
      List<String> files = new List<String>();
      try
      {
          foreach (string f in Directory.GetFiles(sDir))
          {
              files.Add(f);
          }
          foreach (string d in Directory.GetDirectories(sDir))
          {
              files.AddRange(DirSearch(d));
          }
      }
      catch (System.Exception excpt)
      {
          MessageBox.Show(excpt.Message);
      }
      
          return files;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-20
        • 1970-01-01
        • 2015-03-22
        • 2011-10-09
        • 2023-03-28
        • 1970-01-01
        相关资源
        最近更新 更多