문제

폴더를 스파이하기 위해 readDirectoryChangesw를 사용하고 있습니다. 큰 파일을 폴더에 복사하는 경우 여러 file_Action_Modified 메시지를받을 수 있습니다. Windows가 파일의 큰 청크를 작성할 때마다 각각에 대한 파일 수정 알림을 얻을 수 있습니다. 시각. CreateFile API를 사용하여 파일이 AP로 파일을 열 수 있는지 확인하려고했지만 때때로 일부 파일은 항상 다른 AP에 의해 잠겨 있습니다 (예 : Outlook을 열면 PST가 업데이트되지만 AP CAN '액세스 할 때, 우리는 그것을 열려면 그림자 사본을 시작해야합니다. 그래서 내 질문은 파일이 복사 된 것을 아는 방법입니다.

도움이 되었습니까?

해결책

이것은 매우 해킹 된 특성의 해결책이지만 매우 털이 많은 상황에서는 파일의 크기 (또는 수정 된 날짜)를 확인하기 위해 폴링 루프를 실행할 수 있습니다. 잠시 변경되지 않으면 약간 파일이 복사 된 것으로 안전하게 가정합니다.

편집하다: 이것은 평균 사례에서 최적의 솔루션이 아니지만 OP의 경우 문제 제약으로 더 나은 솔루션을 배제한다는 것을 고려하십시오. 다운 보트를 생각하기 전에 이것에 대해 생각해보십시오.

다른 팁

파일 크기에 대해 여론 조사 할 때 사용하지 마십시오. _stat/_stat64. 대신, 필요할 때마다 파일을 열고 전화하십시오. _filelengthi64 파일의 크기를 얻습니다. 반환 된 파일 크기 _stat64 Windows 운영 체제에서 실시간으로 업데이트되지 않습니다. 또한 파일을 열 수있게함으로써 긴 복사 작업이 완료되었음을 확인하기 위해 테스트하고 있습니다.

Windows는 디렉토리 컨텐츠 업데이트를 모니터링하는 API를 제공합니다. 생성 된 이벤트를 사용하여 새 파일을 감지 할 수 있지만이 이벤트 발사가 반드시 파일이 아직 릴리스되었음을 의미하지는 않습니다.

기본 C ++ 사양 및 코드 예제 :

http://msdn.microsoft.com/en-us/library/aa365261(vs.85).aspx

.그물 :

http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top