2011-08-07 4 views
1

루비 (파일 A)에서 직렬화 된 데이터를 xml 형식 (파일 B)으로 변환하는 응용 프로그램을 작성하고 있습니다. 변경되지 않은 파일을 다시 변환하지 않으려면 수정 날짜 확인을 이미 추가했습니다. 파일 A의 마지막 수정이 파일 B의 마지막 수정보다 오래된 경우 새 변환을 피할 수 있습니다.파일이 실제로 수정되었는지를 확인하는 가장 좋은 방법은 무엇입니까?

Unf. 일부 파일 A는 덮어 쓰여지지만 동일한 내용을 유지합니다. 이것은 변환 과정을 쓸데 없게 만들고 그것을 피하고 싶습니다.

디스크에 마지막으로 변환 된 파일 A의 해시를 저장하려고 생각하고 변환하기 전에 파일의 해시가 변경되었는지 확인할 수있었습니다.

루비에서 해시 코드를 쉽게 만들 수있는 방법이 있습니까?

답변

5
require 'digest/sha1' 

Digest::SHA1.hexdigest(File.read("/a")) # => "da39a3ee5e6b4b0d3255bfef95601890afd80709" 
0

파일의 크기는 얼마나됩니까?

큰 파일이 아니라면 파일 B가 업데이트 될 때마다 파일 C에 파일 A의 복사본을 쓸 수 있습니다. 다시 파일 B를 업데이트 할 때

, 당신은 그들이 다른 경우, 당신은 파일 B를 업데이트 파일 A와 B에 DIFF을 수행

다른 솔루션이 있습니다
+0

또한 체크를 할 때마다 diff가 2x 시간이 걸릴 것입니다. – Matteo

0

:

  • 직렬화 된 파일을 다시 쓰고 맨 위에 주석을 삽입하거나 이미 변환 된 것으로 표시하는 끝에 주석을 추가하십시오.

  • conve 후에 파일을 하위 디렉토리로 이동하십시오. rsion

관련 문제