[#] Cancellare forzatamente un file

sabato 10 dicembre 2005 - 11.51

Juwan Profilo | Junior Member

Salve ragazzi ho un problema con un'applicazione word document, ho creato un
pulsante all'interno del smart panel di word, che copia il documento aperto,
in un altro file, e poi questo file viene letto, ovviamente ogni volta che
avvio questa procedura devo prima assicurarmi che il file di destinazione
non esista già, ma proprio questo fatto mi da dei problemi, la prima volta
che viene chiamata questa procedura, va tutto a buon fine, ma se la chiamo
nuovamente, mi dice che è impossibile cancellare il file di destinazione
perchè è utilizzato in un altro processo, invece non c'è nessun processo che
usa quel file, esiste forse un modo per cancellare forzatamente un file.
Posto comunque qui sotto il codice affinchè possa farmi capire meglio.

private void leggi_testo_Click(object sender,EventArgs e)

{

try

{

if(File.Exists(destination))

File.Delete(destination);

File.Copy(source, destination)
}

catch (Exception ex)
{

MessageBox.Show( ex.Message + Environment.NewLine +
ex.StackTrace);

}

}

schifidus Profilo | Junior Member

Ciao il metodo Copy esposto dalla classe File ha due costruttori:
il primo accetta due argomenti (file di origine e file di destinazione)
l'overload del metodo accetta 3 argomenti (file di origine, file di destinazione, bool overwrite).
Il terzo parmaetro è un valore booleano che settato a true ti permette di sovrascrivere in automatico il file nel caso esista già.
Questo ti permette di eliminare del codice.
la tua nuova funzione sarà:

private void leggi_testo_Click(object sender,EventArgs e)

{

try

{

File.Copy(source, destination,true)
}

catch (Exception ex)
{

MessageBox.Show( ex.Message + Environment.NewLine +
ex.StackTrace);

}

}

Ti consiglio poi di fare il catch della specifica eccezzione, in quanto sai già in quale eccezzione potresti incorrere:
System.IO.IOException.
Inoltre per gestirla meglio dovresti mettere in una clausola finally il metodo close per i due files e rilanciare l'eccezione al metodo chiamante per poi intercettarla ad un livello più alto.
Ciao Marco.

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5