将所有文件从文件夹复制到另一个没有权限限制的文件夹

时间:2011-10-31 20:12:02

标签: c# .net

请帮助我,我被困住了!

我想将指定路径中的所有子文件夹复制到另一个文件夹。我已经成功地在普通文件夹上,但有时我得到一个未经授权的感知,所有程序崩溃。 我希望能够继续运行该程序,只需跳过未授权访问文件夹......

有什么办法吗?

谢谢

这是我的代码:

foreach (string dirPath in Directory.GetDirectories(strSourcePath, "*",SearchOption.AllDirectories))
{
     Directory.CreateDirectory(dirPath.Replace(strSourcePath, strTargetPath));
}

//Copy all the files
Foreach (string newPath in Directory.GetFiles(strSourcePath, "*.*",SearchOption.AllDirectories))
{
     File.Copy(newPath, newPath.Replace(strSourcePath, strTargetPath));
 }

当我尝试执行此行时发生崩溃:Directory.GetDirectories(strSourcePath, "*", SearchOption.AllDirectories

3 个答案:

答案 0 :(得分:3)

抓住异常并继续前进。

ex pseudocode:

for file in folder {
    try {
        operation
    } catch (UnauthorizedAccessException ){
    continue; //Probably should log here
    }
}

答案 1 :(得分:1)

我不认为有一种内置的方法来递归枚举文件,当它在某个目录中获得异常时不会死亡。所以你需要自己实现递归。

如果枚举引发错误,您可以查看以下问题:

Enumerating Files Throwing Exception

如果是引发错误的复制,我只需为这些例外添加try catch子句,然后继续下一个文件。

答案 2 :(得分:0)

您必须在try-catch错误句柄中包含目录和文件创建的两个部分。如果出现错误,只需记录错误或显示消息,但它将继续搜索并复制。

您还可以查看Recursively resume directory scan

错误的访问目录或文件失败的权限发生错误,但不用担心,它很顺利。不要忘记检查您是否从原始方设置了正确的权限。