2012-02-14 5 views
1

Qt로 Mac 및 Windows 용 앱을 개발 중입니다. 폴더 X의 변경 사항을 모니터링하고 있습니다. 파일이 폴더 X의 어딘가에서 복사 될 때 lastModified() 날짜를 읽습니다. Windows에서는 원래 파일의 최종 수정 날짜를 표시합니다. 그러나 Mac에서는 Current DateTime을 반환합니다. 파일 이름을 바꿀 때 폴더 X에 복사 된 후 Windows 및 Mac에서 원본 파일의 마지막 수정 날짜를 가져옵니다.Qt QFileInfo.lastModified() Mac OSX 버그?

Mac에서 Qt가 파일을 복사 할 때 현재 DateTime을 반환하고 파일의 이름을 변경 한 후 원래 파일의 수정 시간을 반환하는 이유는 무엇입니까?

+0

좋아, Windows 및 Mac에서 좀 더 테스트 한 결과, 다음과 같은 사항을 관찰했습니다. 감시중인 폴더에 파일을 복사 할 때 파일이 만들어 질 때 한 번만 신호가 방출됩니다. OS가 파일 쓰기를 끝내면 신호가 출력되지 않습니다. 거기에 해결 방법이 있습니까? –

답변

0

날짜 시간 소인은 위에서 암시 한 것처럼 폴더 모니터링 시스템을 구현하기에 충분하지 않습니다.

저는 Mac과 Windows에서 안정적인 폴더 모니터링 시스템을 작성하는 데 몇 달을 소비했습니다. 각각의 완전히 다른 전략이 필요했습니다.

on mac : 각 파일 및 폴더는 inode 번호 (<sys/stat.h>)로 고유하게 식별 될 수 있습니다.이 번호는 폴더 구조를 변경하여 변경 사항을 확인하는 데 사용할 수 있습니다.

win : windows에도 stat가 있지만이 숫자는 지속되지 않으므로 사용할 수 없습니다. Windows API의 일부인 ReadDirectoryChanges를 사용하는 솔루션을 만들었습니다.