1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.jetspeed.util;
18
19 import java.io.File;
20 import java.io.FileInputStream;
21 import java.io.IOException;
22 import java.util.zip.Adler32;
23 import java.util.zip.CheckedInputStream;
24 import java.util.zip.Checksum;
25
26 /***
27 * Perform a single checksum calculation for multiple files
28 *
29 * @author <a href="mailto:ate@douma.nu">Ate Douma</a>
30 * @author <a href="mailto:taylor@apache.org">David Sean Taylor </a>
31 * @version $Id$
32 */
33 public class MultiFileChecksumHelper
34 {
35 public static long getChecksum(File[] files)
36 {
37 CheckedInputStream cis = null;
38 FileInputStream is = null;
39 Checksum checksum = new Adler32();
40 byte[] tempBuf = new byte[128];
41
42 for ( int i = 0; i < files.length && files[i] != null && files[i].exists() && files[i].isFile(); i++ )
43 {
44 try
45 {
46 is = new FileInputStream(files[i]);
47 cis = new CheckedInputStream(is, checksum);
48 while (cis.read(tempBuf) >= 0) {}
49 }
50 catch (Exception e)
51 {
52 throw new RuntimeException(e);
53 }
54 finally
55 {
56 if (cis != null)
57 {
58 try
59 {
60 cis.close();
61 }
62 catch (IOException ioe) {}
63 cis = null;
64 }
65 if (is != null)
66 {
67 try
68 {
69 is.close();
70 }
71 catch (IOException ioe) {}
72 is = null;
73 }
74 }
75 }
76 return checksum.getValue();
77 }
78 }