2011-11-04 15 views
5

Estoy intentando cargar un archivo con el control FileUpload. Cuando se carga un archivo, extraigo información de él y luego quiero eliminarlo.Eliminar archivo después de cargar

me las arreglo para subirlo, guardarlo y obtener la información de ella, pero cuando trato de borrarlo Me da la excepción follwing "El proceso no tiene acceso al archivo 'D: \ IIS ** omitido * ** \ V75 ny.csv personal' porque está siendo utilizado por otro proceso.

string fn = Path.GetFileName(fu.PostedFile.FileName); 
     string SaveLocation = Server.MapPath("UploadedCSVFiles") + "\\" + fn; 
     FileInfo fi = new FileInfo(SaveLocation); 

      fu.PostedFile.SaveAs(SaveLocation); 
      fu.PostedFile.InputStream.Dispose(); 
      DataTable dt = AMethodThatUsesFile(SaveLocation); 
      fi.Delete(); 
+1

Probablemente necesitamos saber qué hay en AMethodThatUsesFile() –

+2

Has especificado un método AMethodThatUsesFile (SaveLocation) ;. Si utiliza alguna clase como StreamReader para leer el archivo, cierre el lector usando StreamReader.Close(); método antes de intentar eliminar – Prasanth

+0

@Prasanth Eso lo hizo! ¡Gracias! – Lautaro

Respuesta

7

Prueba este código para borrar el archivo.

  System.IO.File.Delete(SaveLocation); 

se ha especificado un método AMethodThatUsesFile (SaveLocation) ;. Si usa cualquier clase como St reamReader para leer el archivo, cierre el lector usando StreamReader.Close(); método antes de tratar de eliminar

+0

No hay ninguna razón aparente por la que deba verificar la presencia del archivo aquí; el error indica que el archivo ciertamente * existe *, como se esperaba. El problema probablemente reside en el método antes mencionado (y no incluido). –

1

deseche el fi antes de eliminar. y luego nos File.Delete(). recuerde usar instrucciones de uso cuando use objetos desechables, o deséchelos después de su uso.

+0

¿FileInfo incluso implementa IDisposable? –

+0

@Chamika Sandamal no, esto no es todo. Ya lo he intentado. – Lautaro

0
using System.io 

File.Delete(Server.MapPath("../Nurturing/" + fnevents)); 
      FileInfo fInfoEvent; 
      fInfoEvent = new FileInfo(fnevents); 
      fInfoEvent.Delete(); 

aquí fnevents es el nombre del archivo que u está eliminando. Nurturing es el nombre de la carpeta.

Cuestiones relacionadas