2013-06-03 3 views
0

제목이 말하는대로 아래 시나리오 중 어느 것이 더 빠릅니까?파일보다 FileInfo.Exists/Copy가 더 빠릅니까?

 // Using FileInfo 
     FileInfo file = new FileInfo(@"C:\Test.txt"); 

     if (file.Exists) 
      file.CopyTo(@"C:\TestCopy.txt"); 

     // Using File 
     if (File.Exists(@"C:\Test.txt")) 
      File.Copy(@"C:\Test.txt", @"C:\TestCopy.txt"); 

FileInfo는 눈이 읽기 쉽지만 다른 방법보다 빠릅니다.

+0

사례에 대한 벤치 마크를 작성하려 했습니까? – Romoku

+0

작은 테스트를 작성하고 결과를 공유하십시오. – Mzf

+4

참조 : http://stackoverflow.com/questions/1324788/what-is-the-difference-between-file-and-fileinfo-in-c. YMMV를 사용하고 있으며 정확한 사용 사례에 따라 달라 지므로 다른 사람들이 제안한 벤치 마크를 수행하는 것이 가장 좋은 방법 일 것입니다. –

답변

3

차이점은 FileInfo 캐시 정보입니다. 파일 기존 검사가 한 번 실행됩니다. 그런 다음 Exists 속성을 확인하고 THEN create file을 선택하면 Exists 속성에 대한 새 호출은 항상 false를 반환합니다.

+0

사실이지만 파일 존재 확인은 느리게 실행됩니다. –

+0

@ 매튜 왓슨 어떻게 그렇게? 추가 설명은 인정 될 것이다! – SepehrM

+1

@SepehrM'FileInfo.Exists'에 대한 내부 bool 필드가'FileInfo' 생성자에 의해 초기화되지 않았 음을 의미합니다. 대신, 당신이 처음'FileInfo.Exists'를 호출 할 때 초기화됩니다. (리플렉터 등을 사용하여 구현을 검사하면이 사실을 알 수 있습니다.) –