跳过GetFiles()中的系统文件/目录

时间:2014-03-20 09:27:24

标签: c# visual-studio-2010

我有这种方法可以将我的 USB 中的所有图像复制到硬盘驱动器,比如C:\,但是由于无法访问system-files/directories而引发异常。

如果我跳过SearchOption.AllDirectories参数,它可以正常工作,但我的主要目的是从USB及其子目录中复制所有图像

 public void Copy(string sourceDir, string targetDir)
 {
     try
     {
         var files = System.IO.Directory.GetFiles(sourceDir, "*.jpg",  
                                                  SearchOption.AllDirectories);
         foreach (string srcPath in files)
         {
             File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), true);
         }
     }
     catch (System.UnauthorizedAccessException)
     {
     }
 }

如何跳过system-files/directories

1 个答案:

答案 0 :(得分:0)

这样的事情可能会有所帮助:(未经测试)

foreach (string srcPath in files)
{
    FileAttributes attributes = File.GetAttributes(srcPath);
    bool isSystem = ((attributes & FileAttributes.System) == FileAttributes.System);
    bool isDirectory = ((attributes & FileAttributes.Directory) == FileAttributes.Directory); 
    if (!isSystem && !isDirectory)
    {
        File.Copy(srcPath, srcPath.Replace(sourceDir, targetDir), true);
    }
}