2010-02-08 12 views
11

Sto costruendo un'app server che copia i file utilizzando la funzione System.IO.File.Copy (...). I miei file possono essere piuttosto grandi, quindi, ha una buona probabilità che se la macchina si blocca, accade durante la copia.Copia di file atomici sotto .NET

Dopo aver riavviato il servizio, dovrei essere in grado di raccogliere le attività di copia e continuare. Come posso rilevare se una copia è stata completata con successo o interrotta dal crash del server?

Il mio piano corrente è copiare i file in un nome temporaneo e una volta completata la copia, rinominarlo nel nome finale. In questo modo la denominazione del file è in grado di trasportare le informazioni di stato sull'arresto.

Avete suggerimenti buoni/migliori?

EDIT: sistema operativo di destinazione è Win2003, pertanto, NTFS transazionali non è disponibile

+0

Vedi anche: http://stackoverflow.com/questions/15274861/file-move-atomic -operation –

risposta

10

Altri hanno suggerito NTFS transazionale che va bene se si sta distribuendo su Vista o successivo. Se è necessario supportare XP (o versioni precedenti), il file temporaneo seguito da una mossa (rinomina) è la soluzione migliore.

La risposta a questa domanda simile fornisce ulteriori informazioni: Atomicity of File.Move

Problemi correlati