2013-03-18 4 views
6

특정 파일의 실시간 새로 고침을 구현하고 싶습니다. 필자는 어떻게 든 파일의 마지막 수정 시간을 읽을 수 있다고 가정합니다. 그 파일을 마지막으로로드했을 때와 비교할 수 있습니다. 나는 후자를 기억할 것이다.파일이 수정되었는지 어떻게 확인합니까?

주어진 시간 이후에 파일이 수정되었는지 어떻게 알 수 있습니까? 이 솔루션은 Windows, Mac 및 Linux에서 작동해야합니다.

업데이트 : 내 질문에 약간의 오해가 제기 된 것 같습니다. 생각을 분명히하기 위해 파일이 일반적으로 수정되었는지 확인하는 방법을 묻습니다. 마지막으로 수정 한 시간을 사용하는 것은 처음에는 마음에 들었지만 다른 솔루션에 마음을 열었습니다. 불행히도 우리는 비디오 게임의 모든 텍스처에 대해 이야기하고 있기 때문에 각 파일을 열고 내용을 비교할 여유가 없습니다.

+1

마지막으로 수정 한 시간의 개념은 이식 할 수 없습니다. –

+0

윈도우는 적어도 파일이 수정되었을 때 알려주는 API 호출을 가지고있다. http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx 어쩌면 다른 대상 OS에도 비슷한 기능이있을 수 있습니다. – RedX

+0

SUS/POSIX/IEEE1003 플랫폼에는 [stat] (http://pubs.opengroup.org/onlinepubs/009695399/functions/stat.html)이 있습니다. 그러나 이식성있는 C++ 방식은 없습니다. –

답변

2

Boost.FileSystem, std::time_t last_write_time(const path&)입니다. 면책 조항 :이 개념이 얼마나 이식성이 좋은지 잘 모르겠습니다.

0

stat 또는 fstat 시스템 호출을 사용하십시오. 그들은 수정 시간이 st_atimespecstruct stat 구조를 산출합니다.

+0

이 플랫폼은 독립적입니까? – danijar

+0

MKS 툴킷이 Windows에 설치되어 있다면 그렇다고 나는 믿습니다. – suspectus

+0

플랫폼에 독립적입니다. 실제로 많은 시스템에서 파일 시스템 단위로 atime을 비활성화 할 수 있습니다. – MSalters

2

파일 시스템 문제는 일반적으로 OS에 따라 다릅니다. 모든 OS에는 이러한 정보에 액세스하는 시스템 호출 및/또는 라이브러리 기능이 있습니다. Windows에는 GetFileTime -function이 있으며, Unix/Linux는 stat을 제공합니다. Mac에서도 사용할 수 있습니다. 어쩌면 자바는 뭔가를 제공 할 것이지만, 표준 라이브러리만을 사용해서는 달성하기 힘들다. Google이 가장 친한 친구입니다.

2

QFileInfo 클래스는 시스템 독립적 인 파일 정보를 제공합니다.

QDateTime QFileInfo::lastModified() const 

파일을 마지막으로 수정 한 날짜와 시간을 반환합니다.

Qt의 전체적인 아이디어이기 때문에 상당히 휴대 가능해야합니다. Windows, MacOS 및 Linux가 공식적으로 지원됩니다.

+1

이 작은 작업에 큰 라이브러리를 사용하는 것은 과도한 것 같습니다. – danijar

+1

@sharethis - 누가 이것을 위해 사용해야한다고 말했습니까? Qt는 휴대용 기능의 기차로 가득차 있습니다. BTW는 지금까지 유일한 휴대용 솔루션 인 것 같습니다 :) – dtech

+0

OpenGL 게임을 개발 중이므로 대부분의 프레임 워크가 필요하지 않습니다. 어쨌든 당신의 대답에 감사드립니다! – danijar

관련 문제