2011-11-26 10 views
7

Voglio copiare alcuni file di testo, che sono scritti da un'altra app, ma non voglio fare nulla per evitare l'altra app. dalla scrittura a questi file.File.Copy impedisce a un'altra app di scrivere sul file?

Sto usando File.Copy, da System.IO namespace, C#, .Net Framework 2.0.

Ho controllato la documentazione di MSDN, ma nulla è specificato sul metodo utilizzato da File.Copy. È un wrapper per una chiamata API non gestita?

Il blocco File.Copy blocca o blocca il file che viene copiato in alcun modo?

Grazie in anticipo per qualsiasi informazione su questo.

+0

@ Joey: presumo che Matt si riferisca al file di origine, non al file di destinazione. Tuttavia, copiare un file mentre un altro processo vi sta scrivendo potrebbe portare a risultati strani, a seconda del tipo di file e dello scopo di copiarlo. –

risposta

1

È possibile utilizzare .Net Reflector (o un altro strumento di decompilazione) per esaminare la struttura interna del metodo.

In realtà è possibile vedere che System.IOFile.Copy utilizza la libreria Microsoft.Win32.Win32Native per copiare i file. Microsoft.Win32.Win32Native è un wrapper CLR per tutte le operazioni native Win32.

+0

Grazie a tutti per le vostre risposte. – netcat

+0

Joey, sì, mi riferisco al file sorgente e non al file di destinazione su cui sto copiando. Schglurps, sono scaduto con questo, ho aperto un filestream con fileshare impostato su None in un'altra app. e sono stato in grado di copiare il file comunque, usando File.Copy. Sailer, grazie. Non so perché non ci ho pensato. Osserverò il metodo in riflettore e leggerò la chiamata a a32 win32. – netcat

2

Se l'altra app crea i file specificando FileShare.None, si riceverà una eccezione non autorizzata. Quindi immagino che devi solo elaborare questa eccezione specifica nella tua app.

+0

Mio male, grazie Fredrik per aver chiarito la mia domanda. – netcat

Problemi correlati