2011-11-04 27 views
5

FileUpload denetimi ile bir dosya yüklemeye çalışıyorum. Dosya yüklendiğinde, ondan bilgi alıyorum ve sonra onu silmek istiyorum.Yüklemeden sonra dosya siliniyor

ben bunu yükleyip kaydetmeniz ve ondan bilgi almak için yönetmek, ama onu silmeye çalıştığınızda i follwing istisna almak "işlem dosyaya 'D erişemez: \ IIS ** atlanmıştır * başka bir işlem tarafından kullanıldığı için ** \ V75 kişisel ny.csv'.

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

Muhtemelen() –

+2

Sen bir yöntem AMethodThatUsesFile (SaveLocation) Belirtilen AMethodThatUsesFile ne olduğunu bilmek gerekir ;. Dosyayı okumak için StreamReader gibi herhangi bir sınıf kullanıyorsa, lütfen StreamReader.Close(); Yöntem – Prasanth

+0

@Prasanth silmeye çalışmadan önce Bu yaptı! Teşekkürler! – Lautaro

cevap

7

dosyayı silmek için bu kodu deneyin.

  System.IO.File.Delete(SaveLocation); 

Sen bir yöntem AMethodThatUsesFile (SaveLocation) ;. belirtilen St gibi sınıfları kullanır reamReader dosyayı okumak için lütfen StreamReader.Close() kullanarak okuyucuyu kapatın;

+0

Dosyanın varlığını kontrol etmek için ihtiyaç duyması gereken bir sebep yok; hata, dosyanın beklendiği gibi * var olduğunu * gösterir. Sorun muhtemelen yukarıda belirtilen (ve dahil değildir) yöntemde bulunur. –

1

silmeden önce fi elden silmeye çalışırken önce yöntemi. ve sonra bize File.Delete(). Tek kullanımlık nesneleri kullanırken ifadeleri kullanmayı unutmayın veya kullanımdan sonra atın.

+0

FileInfo bile kullanılabilir değil mi? –

+0

@Chamika Sandamal hayır, öyle değil. Bunu zaten denedim. – Lautaro

0
using System.io 

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

burada fnevents u sildiğiniz dosyanın adıdır. Nurturing, klasörün adıdır.

İlgili konular