2011-11-26 72 views
7

我想複製一些文本文件,這是由另一個應用程序編寫的,但我不想做任何事情來阻止其他應用程序。從寫入這些文件。File.Copy是否阻止另一個應用程序寫入文件?

我使用的是File.Copy,來自System.IO namespace,C#,.Net Framework 2.0。

我檢查了MSDN的文檔,但沒有具體說明File.Copy使用的方法。它是一個非託管API調用的包裝?

是否File.Copy鎖定或阻止以任何方式複製的文件?

在此先感謝有關此任何信息。

+0

@Joey:我認爲馬特指的是源文件,而不是目標文件。儘管如此,在另一個進程寫入文件時複製文件可能會導致奇怪的結果,具體取決於文件類型以及複製文件的目的。 –

回答

1

您可以使用.Net Reflector(或其他反編譯工具)來查看該方法的內部結構。

其實你可以看到System.IOFile.Copy使用Microsoft.Win32.Win32Native庫來處理文件。 Microsoft.Win32.Win32Native它是所有Win32本機操作的CLR包裝器。

+0

感謝大家的回覆。 – netcat

+0

Joey,是的,我指的是源文件,而不是我複製到的目標文件。 Schglurps,我用這個過期了,我在另一個應用程序中打開了一個filehare設置爲None的文件流。我仍然可以使用File.Copy複製文件。 Sailer,謝謝。我不知道爲什麼我沒有想到這一點。我會看反射器中的方法,並在win32 API調用中讀取。 – netcat

2

如果其他應用程序通過指定FileShare.None來創建其文件,您將收到UnauthorizedAccessException。所以我想象你只需要在你的應用程序中處理這個特定的異常。

+0

我的不好,感謝Fredrik澄清我的問題。 – netcat

相關問題