【问题标题】:FIle.Copy() ouput An unhandled exception of type 'System.UnauthorizedAccessException' occurred in mscorlib.dllFIle.Copy() 输出 mscorlib.dll 中出现“System.UnauthorizedAccessException”类型的未处理异常
【发布时间】:2022-01-20 10:52:16
【问题描述】:

我正在尝试在 File 类中使用 Copy 方法,但我无法让它工作它总是打印相同的异常,我试图在 Desktop 中创建文件夹,我试图取消选中只读属性文件夹,但没有机会这样做,因为保存属性后,该文件夹仍然始终具有只读属性。

这是我的代码:

 mypath = "D:\\Test\\image1.png";
 folder = "C:\\Users\\user1\\Desktop\\folder"
 DirectoryInfo directory = Directory.CreateDirectory(folder);
 File.Copy(directory.FullName, mypath);

我已经在社区中搜索了解决方案,但这些解决方案中的任何一个都适合我:

我该如何解决这个问题?

【问题讨论】:

  • 一个用户可以访问他自己的用户帐户文件“C:\\Users\\user1\\Desktop\\folder”。如果您需要访问其他用户文件,而不是将文件放在所有用户都可以访问的位置,例如网络驱动器。
  • File.Copy(directory.FullName,...)。您正在尝试使用 File.Copy 复制目录
  • @PanagiotisKanavos 不,我正在尝试将文件从文件夹复制到最近创建的另一个文件夹
  • 你的代码是copy the folder over the file
  • Admin 在 VS 中运行时不起作用,除非您使用快捷方式打开 VS 并选择 RunAsAdmin。

标签: c# windows file


【解决方案1】:

复制方法不能与文件夹名称参数一起使用,而且你的参数顺序是错误的。

方法的定义是

public static void Copy (string sourceFileName, string destFileName);

两个参数都应该是文件名,而不是目录。

所以你可以使用

File.Copy(mypath, folder+"\\" + Path.GetFileName(mypath));

【讨论】:

    【解决方案2】:

    您正在尝试使用File.Copy(sourceFilename,destFilename) 复制目录。最重要的是,目的地不能是目录路径

    destFileName字符串

    目标文件的名称。这不能是目录或现有文件。

    要将文件复制到新目录,您需要构建新的完整文件路径并颠倒参数的顺序:

    Directory.CreateDirectory(folder);
    
    ...
    
    var fileName=Path.GetFileName(myPath);
    var destPath=Path.Combine(folder,fileName)
    
    File.Copy(myPath,destPath);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多