getfiles是否忽略当前的用户文件夹?

时间:2014-01-27 20:08:31

标签: c#

文件夹C:\ Users包含3个子文件夹:

  C:\Users\hacen
  C:\Users\_rafi_000
  C:\Users\Public

然而,当我打电话时:

  DirSearch(@"C:\Users\", "*.jpg");

它从Public和hacen输出所有jpg文件名,但不从 _rafi_000 输出,这是当前用户的文件夹。

这是功能:

       static void DirSearch(string dir, string pattern)
    {

        try
        {

            foreach (string f in Directory.GetFiles(dir, pattern))

            {
                Console.WriteLine(f);

            }
            foreach (string d in Directory.GetDirectories(dir))
            {

                DirSearch(d, pattern);
            }

        }
        catch (System.Exception ex)
        {
           //MessageBox.Show(ex.Message);
        }


    }

修改

我尝试使用下面的代码并且它有效。所以这不是访问被拒绝的问题:

     DirSearch("C:\Users\_rafi_000\","*.jpg");

到目前为止我注意到的是,与其他子文件夹不同,当我按F2

时,文件夹_rafi_000无法命名

3 个答案:

答案 0 :(得分:0)

可能与jpg的存储位置以及重新分析点在以后的Windows版本中的工作方式有关。

我建议看看:

目录搜索:http://msdn.microsoft.com/en-us/library/bb513869.aspx

重新分析点信息:http://msdn.microsoft.com/en-us/library/aa365503(VS.85).aspx

我运行了你的代码,它在Windows XP中运行良好:

C:\Users\hacen\bar.jpg
C:\Users\Public\bar1.jpg
C:\Users\_rafi_000\bar2.jpg

答案 1 :(得分:0)

这会有用吗?

void DirSearch(string dir, "*.JPG")  
 { 
     foreach (string f in Directory.GetFiles(dir, "*.JPG")) 
     { 
         Console.WriteLine(f);
     } 
     foreach (string d in Directory.GetDirectories(dir))  
     { 
         DirSearch(d);
     } 
  } 

答案 2 :(得分:-1)

您的代码是正确的。 或许Process Monitor可以提供帮助吗?

如果代码正常,则必须是其他内容。我知道您可以直接针对导致问题的目录运行代码(这很令人惊讶) - 但我认为Process Mon可以提供帮助。