2011-11-04 39 views
5

Tôi đang cố gắng tải lên tệp có quyền kiểm soát Tải lên tệp. Khi tập tin được tải lên, tôi trích xuất thông tin từ nó và sau đó tôi muốn xóa nó.Xóa tệp sau khi tải lên

tôi quản lý để tải nó, lưu nó và nhận được thông tin từ nó, nhưng khi tôi cố gắng để xóa nó tôi nhận được ngoại trừ follwing "Quá trình này không thể truy cập các tập tin 'D: \ IIS ** bỏ qua * ** \ V75 ny.csv cá nhân' bởi vì nó đang được sử dụng bởi quá trình khác.

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

Có lẽ chúng ta cần biết những gì trong AMethodThatUsesFile() –

+2

Bạn đã chỉ định phương thức AMethodThatUsesFile (SaveLocation) ;. Nếu nó sử dụng bất kỳ lớp nào như StreamReader để đọc tệp, vui lòng đóng trình đọc bằng cách sử dụng StreamReader.Close(); phương pháp trước khi cố gắng xóa – Prasanth

+0

@Prasanth Đã làm điều đó! Cảm ơn! – Lautaro

Trả lời

7

Hãy thử mã này để xóa file.

  System.IO.File.Delete(SaveLocation); 

Bạn đã chỉ định phương pháp AMethodThatUsesFile (SaveLocation) ;. Nếu nó sử dụng bất kỳ lớp nào như St reamReader để đọc tệp, vui lòng đóng trình đọc bằng cách sử dụng StreamReader.Close(); trước khi cố gắng xóa

+0

Không có lý do rõ ràng nào mà anh ta cần phải kiểm tra sự hiện diện của tệp tại đây; lỗi cho biết tệp * chắc chắn * tồn tại, như mong đợi. Sự cố có thể nằm trong phương thức đã nói ở trên (và không được bao gồm). –

1

xử lý fi trước khi xóa. và sau đó chúng tôi File.Delete(). hãy nhớ sử dụng các câu lệnh khi sử dụng các vật dùng một lần hoặc vứt bỏ nó sau khi sử dụng.

+0

Thậm chí FileInfo có triển khai IDisposable không? –

+0

@Chamika Sandamal không phải là không. Tôi đã thử điều đó rồi. – Lautaro

0
using System.io 

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

đây fnevents là tên của tập tin mà u đang xóa. Nuôi dưỡng là tên của thư mục.

Các vấn đề liên quan