I need to compare very large files. Which need several hour. diff don't print any progress. I wrote a very simple java program to do the thing.
Code:
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
public class Test {
public static void main(String[] args) throws Exception {
String name = "backup.part1.rar";
File file1 = new File("/home/bak/1/" + name);
File file2 = new File("/mnt/" + name);
java.io.BufferedInputStream fi1 = new BufferedInputStream(
new FileInputStream(file1));
java.io.BufferedInputStream fi2 = new BufferedInputStream(
new FileInputStream(file2));
byte[] bs1 = new byte[1024 * 1024];
byte[] bs2 = new byte[1024 * 1024];
long pos = 0;
while (true) {
System.out.format("%,d\n", pos);
int len1 = fi1.read(bs1);
int len2 = fi2.read(bs2);
if (len1 != len2)
throw new Error();
if (len1 < 0)
break;
for (int i = 0; i < bs1.length; i++) {
if (bs1[i] != bs2[i]) {
System.out.println(pos + i);
throw new Error();
}
}
pos += len1;
}
fi1.close();
fi2.close();
}
}
Bookmarks