2010-02-04 11 views
5

Sto creando un file utilizzando File.WriteAllText e copiando lo stesso file in un'altra directory utilizzando il metodo File.Copy. Ma per qualche ragione non crea un file nella directory sorgente ma lo copia nella directory di destinazione.File.WriteAllText e File.Copy issue

Quale potrebbe essere il problema? Per favore mi faccia sapere.

File.WriteAllText(sourceFilePath, Contents.ToString()); 
File.Copy(sourceFilePath, destFilePath); 
+0

Questo comportamento è coerente con altri percorsi? –

risposta

0

Il metodo chiama concomitante come nell'esempio?

In tal caso, è possibile chiamare File.WriteAllText due volte per aggirare il problema, anche se non so perché si verifica.

È possibile eseguire un controllo File.Exists prima della copia, o magari provare un Thread.Sleep (100) e vedere che si tratta di un problema di tipo I/O del disco.

7

Bene, si sa per certo che il file è stato effettivamente creato, altrimenti File.Copy() genera un'eccezione. E File.Copy() non elimina mai il file sorgente, come fa File.Move().

La spiegazione più semplice è che il file viene semplicemente creato in una cartella che non ti aspetti. Che è comune se sourceFilePath non è un percorso assoluto. Ciò accade comunemente quando si utilizza OpenFileDialog con la proprietà RestoreDirectory impostata su false. Per esempio.

Evitare questo utilizzando sempre percorsi assoluti. Environment.GetFolderPath() è tuo amico.

+0

Questa volta ha creato un file ma sta scrivendo i vecchi contenuti nel file di testo. File.Copy funziona bene con la directory di destinaton. – nav100

+0

Sta scrivendo vecchi contenuti? O stai guardando una vecchia versione del file? Altre prove che sta creando il file in una directory diversa. –

0

In quale cartella stai scrivendo? Questo potrebbe essere un problema di virtualizzazione della cartella Vista/7?

Se potessi mostrarci il codice attuale che stai utilizzando, sarebbe utile.