본문 바로가기
정보/IT

Java 에서 File 의 내용 수정 여부 판단

by 키운씨 2012. 3. 6.

파일의 내용이 변경되면,
  * hashCode 는 변경되지 않는다. (hashCode 는 해당 파일이 동일한 파일인지의 여부만 체크할 수 있다) 
  * lastModified 를 이용하여 업데이트 여부를 판단할 수 있다 

컴파일러를 개발하면서 내부적으로 파일의 내용 수정 여부를 판단 해야 할 경우가 있었는데
원래는 파일이 수정된 일자를 비교하곤 했었다 (lastModified)
하지만 왠지 모르게 컴파일이 제대로 되지 않는다는 (파일 비교가 제대로 이뤄지지 않는다는) 버그가 계속해서 들어오는 것이었다
그래서 짱구를 이리 굴리고, 저리 굴리고, 계속 굴리고 굴려도 답을 찾지 못하다가
옆에 있던 성준이 말에 CRC 값을 체크하는 것으로 바꿨는데 더이상 파일 비교에 대한 오류가 발생하지 않는 것이었다 (고맙데이~)

다만 단점은... 파일 용량이 큰 경우 CRC를 추출하기 위해 필요로 하는 연산의 비용이 좀 크다는 것이었다
대략 400kb 짜리 파일 하나 연산해내는데 2초 가까이 걸린다는건 아무래도 부담스런 시간이다
내 컴퓨터 사양이 Quad Q6600(2.5GHz), 4GB Memory, 64bit Windows 7 임에도 저정도 시간은 좀 거시기하다...

그렇다고 당장 튜닝작업이 필요하지 않다
더이상 Java Compiler 의 성능 향상에 대한 요구가 없기 때문이다 
그래서 걍 CRC를 체크하는 코드를 쓰기로 했다 (귀찮기도 하고...)
만일 추후 파일 비교 로직이 필요로된다면 다시 한번 lastModified() 를 제대로 검토해 봐야겠다


'정보 > IT' 카테고리의 다른 글

제7회 공감세미나 동영상  (0) 2012.05.07
Script Bot (Bejeweled Blitz)  (2) 2012.05.02
Javascript Preprocessor  (5) 2012.02.22
GanttProject - 프로젝트 관리툴  (0) 2011.09.05
이클립스 편이기능  (0) 2011.08.14