package de.axone.file; import java.io.File; public class FileHasher { /** * check recursively if something has changed and * compare to old checksum. * * @param dir to check * @param oldChecksum from last run * @return <tt>true</tt> if changed */ public static boolean hasChanged( File dir, int oldChecksum ){ int newSum = checksumDir( dir ); if( newSum != oldChecksum ){ return true; } else { return false; } } public static int checksumDir( File dir ){ File [] subs = dir.listFiles(); int sum = 0; for( File sub : subs ){ if( sub.isDirectory() ){ sum ^= checksumDir( sub ); } else { sum ^= checksum( sub ); } } return sum; } /** * Generate a checksum over relevant file parameters. * * @param file * @return the generated checksum */ public static long checksum( File file ){ long lastModified = file.lastModified(); String checkMe = file.getPath() + "#" + lastModified; return checkMe.hashCode(); } }