1 25 package org.snipsnap.util; 26 27 import org.radeox.util.logging.Logger; 28 29 import java.io.BufferedInputStream ; 30 import java.io.File ; 31 import java.io.FileInputStream ; 32 import java.io.IOException ; 33 import java.util.zip.Adler32 ; 34 import java.util.zip.CheckedInputStream ; 35 36 41 public class FileUtil { 42 43 public static Checksum checksumDirectory(File file) throws IOException { 44 Checksum checksum = new Checksum(file.getAbsolutePath()); 45 if (file.isDirectory()) { 46 checksumFiles(file, file.getAbsolutePath(), checksum); 47 } else { 48 checksumFile(file, file.getAbsolutePath(), checksum); 49 } 50 return checksum; 51 } 52 53 54 private static void checksumFiles(File file, String root, Checksum checksum) throws IOException { 55 File files[] = file.listFiles(); 56 for (int i = 0; i < files.length; i++) { 57 if (files[i].isDirectory()) { 58 checksumFiles(files[i], root, checksum); 59 } else { 60 checksumFile(files[i], root, checksum); 61 } 62 } 63 } 64 65 private static void checksumFile(File file, String root, Checksum checksum) throws IOException { 66 67 CheckedInputStream fin = new CheckedInputStream (new BufferedInputStream (new FileInputStream (file)), 68 new Adler32 ()); 69 byte buffer[] = new byte[8192]; 70 while ((fin.read(buffer)) != -1) { 71 72 } 73 Long checkSum = new Long (fin.getChecksum().getValue()); 74 checksum.add(file.getAbsolutePath().substring(root.length()+1), checkSum); 75 fin.close(); 76 } 77 78 public static void main(String args[]) { 79 try { 80 Checksum checksum = checksumDirectory(new File (args[0])); 81 checksum.store(new File ("./CHECKSUMS")); 82 } catch (IOException e) { 83 Logger.warn("FileUtil: usage: FileUtil jarfile", e); 84 } 85 } 86 87 } 88 | Popular Tags |