【问题标题】:Determine if a file can be moved or copied确定文件是否可以移动或复制
【发布时间】:2010-10-14 10:53:53
【问题描述】:

除了尝试操作和捕获异常之外,是否有方法可以确定文件是否可以移动或复制?

【问题讨论】:

    标签: .net file copy move


    【解决方案1】:

    没有办法知道文件移动或复制是否会保证成功。

    但是你可以检查很多东西,看看它是否会失败:

    • 检查目标位置的磁盘空间(您至少需要文件大小)
    • 检查目标位置已存在的文件
    • 打开一个文件,请求对源文件的读取访问权限,以确保 1) 您拥有该文件的权限,2) 该文件未被使用。
    • 您可以读取整个源文件以确保文件内没有锁。
    • Windows 资源管理器在复制文件(或跨卷移动)时使用的一个技巧是首先创建一个空白文件,然后将文件扩展至完整大小。只有在文件完全分配后,才会开始写入文件。
    • 分配与您要复制的数据大小相同的文件还会告诉您是否已经达到了文件系统引用。
    • 如果某个文件正在使用中,并且您想达到此目的,则可以使用卷影复制 (VSS)。

    有关文件锁定的更多信息:

    有关file locking & permissions in linux 的更多信息,请在此处查看我的回答。

    有关file locking & permissions in Windows 的更多信息,请在此处查看我的回答。

    【讨论】:

      【解决方案2】:

      如果文件可以读取,则可以移动或复制。您是在问如何检查移动或复制是否成功?

      【讨论】:

      • 一些文件系统允许只读访问,在这种情况下可以复制但不能移动。
      【解决方案3】:

      一般情况下,查看文件是否存在,当前用户是否有权限读取文件(或删除文件以进行移动)以及是否具有目标目录的相应权限。同样,对于复制,您应该检查是否有可用的磁盘空间。当然,在此之前,请确保原始文件和目标目录是否存在。

      当然,这并不保证操作一定会成功。很多事情都可能发生。甚至文件的权限也会在您检查和执行操作之间发生变化。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多