【问题标题】:How to skip folders with unauthorized access while creating fileinfo list? [duplicate]创建文件信息列表时如何跳过未经授权访问的文件夹? [复制]
【发布时间】:2013-10-03 00:06:40
【问题描述】:

我有这个用于查找文件和列出列表。但是当涉及到需要授权访问的文件夹时,它会停止。我怎样才能让它跳过那些文件夹并继续?

string[] filetypes = new string[] { "3gp", "avi", "dat", "mp4", "wmv", 
                                                         "mov", "mpg", "flv",  }
try
{
    foreach (string ft in filetypes)
    {                    
        files.AddRange(dif.GetFiles(string.Format("*.{0}", ft),
                                                  SearchOption.AllDirectories));    
    }
}
catch
{
}

【问题讨论】:

  • @emmett 检查答案是否对您有帮助

标签: c# getfiles


【解决方案1】:
static void GetFiles(string dir)
{
    string[] filetypes = new string[] { "3gp", "avi", "dat", "mp4", "wmv", 
                                                     "mov", "mpg", "flv",  }
    foreach(string ft in filetypes)
    {
       foreach (string file in Directory.GetFiles(dir, string.Format("*.{0}", ft),
                                              SearchOption.TopDirectoryOnly)))
       { 
             files.Add(new FileInfo(file));
       }
    }
    foreach (string subDir in Directory.GetDirectories(dir))
    {
        try
        {
            GetFiles(subDir);
        }
        catch
        {
        }
    }
}

使用递归而不是AllDirectories

像GetFiles(dif)一样运行它

【讨论】:

  • -1 如果任何子目录失败,这将失败。你应该注意SearchOption.AllDirectories
  • @SriramSakthivel 感谢您的关注,编辑了我的答案
  • 对不起我的无知,但因为“文件”是 List files = new List();我无法在其中添加字符串。这个过程将由 button1_click 之类的按钮触发。你能重新安排一下吗
  • @emmett 您可以使用 FileInfo 构造函数接受字符串路径,我编辑了我的答案。在 button1_click 处理程序中调用 GetFiles(dir) 有什么问题?
  • @wudzik 谢谢。我现在明白了。但我不得不将 static void 更改为 public。你能像一句话一样简短地解释一下区别吗?最后,如果想要显示当前搜索目录的文本框,我会将 textbox1.text=dir 放在哪里?我放在第一个 foreach 之后,但它似乎工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 2021-08-15
  • 1970-01-01
相关资源
最近更新 更多