【问题标题】:Does File.Copy prevent another app from writing to the file?File.Copy 是否会阻止另一个应用程序写入文件?
【发布时间】:2012-01-06 19:54:18
【问题描述】:

我想复制一些由另一个应用程序编写的文本文件,但我不想做任何事情来阻止另一个应用程序。从写入这些文件。

我正在使用File.Copy,来自System.IO namespace、C#、.Net Framework 2.0。

我查看了 MSDN 的文档,但没有具体说明 File.Copy 使用的方法。它是非托管 API 调用的包装器吗?

File.Copy 是否以任何方式锁定或阻止正在复制的文件?

提前感谢您提供有关此的任何信息。

【问题讨论】:

  • @Joey:我假设 Matt 指的是源文件,而不是目标文件。尽管如此,在另一个进程正在写入文件时复制文件可能会导致奇怪的结果,具体取决于文件的类型和复制的目的。

标签: c# file file-io file-copying


【解决方案1】:

如果其他应用程序通过指定 FileShare.None 创建文件,您将收到 UnauthorizedAccessException。所以我想你只需要在你的应用程序中处理这个特定的异常。

【讨论】:

    【解决方案2】:

    您可以使用.Net Reflector(或其他反编译工具)查看方法的内部结构。

    其实你可以看到System.IOFile.Copy使用Microsoft.Win32.Win32Native库来应对文件。 Microsoft.Win32.Win32Native 它是所有 Win32 本机操作的 CLR 包装器。

    【讨论】:

    • 感谢大家的回复。
    • 乔伊,是的,我指的是源文件,而不是我要复制到的目标文件。 Schglurps,我已经过期了,我在另一个应用程序中打开了一个文件共享设置为无的文件流。无论如何,我都可以使用 File.Copy 复制文件。水手,谢谢。我不知道为什么我没有想到这一点。我将查看反射器中的方法,并阅读 win32 api 调用。
    猜你喜欢
    • 1970-01-01
    • 2014-12-23
    • 2019-09-10
    • 1970-01-01
    • 2017-12-17
    • 2020-04-29
    • 1970-01-01
    • 2011-10-06
    • 2021-10-18
    相关资源
    最近更新 更多