将文件夹中的所有文件复制到另一个文件夹,不受权限限制

本文关键字:文件夹 另一个 权限 复制 文件 | 更新日期: 2023-09-27 18:12:49

请帮帮我,我卡住了!

我想把所有的子文件夹从指定的路径复制到另一个文件夹。我已经成功地到它的普通文件夹,但有时我得到一个未经授权的访问异常和所有的程序崩溃。我希望能够继续运行程序,只是跳过未经授权的访问文件夹…

有办法吗??

谢谢

这是我的代码:

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

将文件夹中的所有文件复制到另一个文件夹,不受权限限制

捕捉异常并继续。

例伪代码:

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

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

如果枚举抛出错误,您可以查看这个问题:

枚举文件抛出异常

如果是复制抛出错误,我只是为这些异常添加一个try catch子句,然后继续下一个文件。

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

你也可以查看递归恢复目录扫描

在拒绝访问目录或文件权限失败时发生错误,但不用担心,运行正常。不要忘记检查您是否从原始端设置了正确的权限。