2014-02-24 3 views
0

질문 배경 :File.Replace - 파일은 다른 프로세스 오류에 의해 사용되는

내가 사용하여 내 C 드라이브의 폴더 내의 다른 지정된 파일의 내용을 하나 개의 지정된 파일의 내용을 덮어 시도하고있다 다음 'File.Replace'방법

//'null' has been set to the 'backup file' parameter as I do not need this. 
File.Replace(fileOnesLocation, filesTwosLocation, null); 

가 오류 :

내가 시도 캐치에 싸여 위의 방법이 현재 recei입니다 다음과 같은 오류가 발생했습니다 :

System.IO.IOException: The process cannot access the file 
because it is being used by another process. 

아무도 올바른 방향으로 나를 가리킬 수 있습니까?

+2

코드에서 다른 곳에서 파일을 열지 않았습니까? –

+1

열린 파일 중 하나 (코드 또는 물리적 파일)입니까? – Abbas

+0

오류는 파일이 다른 프로세스에서 사용되고 있음을 분명하게 나타냅니다. 프로세스가 열리면 한 번만 확인하십시오. –

답변

0

이 오류는 코드가 실행되는 동안 사용자 나 다른 사람이 파일을 바꾸거나 작성한 경우에 자주 발생합니다.

+8

이 답변은 원래 질문에 대한 의견으로 게시되어야합니다. 하나의 라이너도 –

+1

대답은 ... – codeSetter

0

파일이 사용자 또는 다른 사용자가 열려 있으면 파일을 열지 못할 수 있습니다.

사용자가 처리 할 작업 관리자를 체크인하고 파일을 닫습니다.

4

이 오류를 피하려면 this answer 같은 것을 시도해보고 파일이 열려 있는지 확인하는 방법을 만드십시오.

protected virtual bool IsFileLocked(FileInfo file) 
{ 
    FileStream stream = null; 

    try 
    { 
     stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); 
    } 
    catch (IOException) 
    { 
     //the file is unavailable because it is: 
     //still being written to 
     //or being processed by another thread 
     //or does not exist (has already been processed) 
     return true; 
    } 
    finally 
    { 
     if (stream != null) 
      stream.Close(); 
    } 

    //file is not locked 
    return false; 
}