2016-07-06 3 views
-1

파일을 업로드하고 대상 폴더에 같은 이름의 파일이 존재하면 삭제합니다.파일 삭제 IO 예외

메시지 "다른 프로세스에서 사용하고 있기 때문에 ... 캔트 액세스 파일" 는하지만 위의 포인트 라인은

에 예외가 발생합니다. 코드는 다음과 같습니다

public ActionResult Upload(int? chunk, string name) 
{ 
    string fileExtension = Path.GetExtension(name); 
    if (fileExtension != ".csv" && fileExtension != ".xml"){ 
     return Json(new { 
      Success=false, 
      Message = "<b>Invalid file type</b>" 
     }, JsonRequestBehavior.AllowGet); 
    } 

    var fileUpload = Request.Files[0]; 
    string fullName = Path.Combine(HttpRuntime.AppDomainAppPath, "App_Data", fileUpload.FileName); 
    if (System.IO.File.Exists(fullName)) 
     System.IO.File.Delete(fullName);// throws exception. 
} 
+0

'File.Exists'은 * redundant * : https://msdn.microsoft.com/en-us/library/system.io.file.delete(v=vs.110).aspx "파일이 삭제되지 않으면 예외가 발생하지 않습니다. " –

+0

파일을 조작 할 때 모든 메서드가 닫혀 있는지 확인하십시오. 버퍼, 리더, 작가, IDocument 등 ... 나는 1 주 전에 당신과 같은 문제가있었습니다. – Alexis

+0

"삭제는 일반 I/O 또는 메모리 매핑 된 파일을 위해 열려있는 파일을 삭제하지 않습니다." –

답변

2

오류는 매우 자명합니다. 삭제하려는 파일이 이미 다른 프로세스에서 사용되고 있습니다. 파일 또는 다른 프로세스를 사용하는 사람이 본인인지 확인하십시오.

사용하는 사람이 있다면 열어 놓은 모든 리더를 닫아야합니다.

+0

독자가 존재하지 않습니다. 그 업로드 방법과 파일 상태 검사는 처음에 실행됩니다 ..하지만 .. 페이지로드 기능에서 나는 기존 파일을 읽지 만 닫지는 않습니다 : D Thanks – TyForHelpDude