diff --git a/bin/checkDataIntegrity/Main.class b/bin/checkDataIntegrity/Main.class index 26d8031..404ccc9 100644 Binary files a/bin/checkDataIntegrity/Main.class and b/bin/checkDataIntegrity/Main.class differ diff --git a/checkDataIntegrity.jar b/checkDataIntegrity.jar index c1a3e62..2309cc9 100644 Binary files a/checkDataIntegrity.jar and b/checkDataIntegrity.jar differ diff --git a/src/checkDataIntegrity/Main.java b/src/checkDataIntegrity/Main.java index 5b3f621..600f624 100644 --- a/src/checkDataIntegrity/Main.java +++ b/src/checkDataIntegrity/Main.java @@ -24,12 +24,12 @@ public class Main { final long start = System.currentTimeMillis(); final AtomicLong count = new AtomicLong(); final AtomicLong countErr = new AtomicLong(); - final ThreadLocal bufs0 = ThreadLocal.withInitial(() -> new byte[4096]); - final ThreadLocal bufs1 = ThreadLocal.withInitial(() -> new byte[4096]); + final ThreadLocal bufs0 = ThreadLocal.withInitial(() -> new byte[8192]); + final ThreadLocal bufs1 = ThreadLocal.withInitial(() -> new byte[8192]); try (Stream walk = Files.walk(Path.of(path0))) { walk -// .parallel() + .parallel() .filter(Files::isRegularFile) .forEach(p0 -> { long cnt = count.incrementAndGet(); @@ -43,21 +43,25 @@ public class Main { final byte[] buf0 = bufs0.get(); final byte[] buf1 = bufs1.get(); try (InputStream inputStream0 = Files.newInputStream(p0); InputStream inputStream1 = Files.newInputStream(p1);) { - final int len0 = inputStream0.read(buf0); - final int len1 = inputStream1.read(buf1); - if (len0 != len1) { - System.out.println(rel + ": Length mismatch"); - countErr.incrementAndGet(); - return; - } - if (len0 == -1) { - return; - } - if (!Arrays.equals(buf0, 0, len0, buf1, 0, len1)) { - System.out.println(rel + ": Data mismatch"); - countErr.incrementAndGet(); - return; + int len0, len1; + do { + len0 = inputStream0.read(buf0); + len1 = inputStream1.read(buf1); + if (len0 != len1) { + System.out.println(rel + ": Length mismatch"); + countErr.incrementAndGet(); + break; + } + if (len0 == -1) { + break; + } + if (!Arrays.equals(buf0, 0, len0, buf1, 0, len1)) { + System.out.println(rel + ": Data mismatch"); + countErr.incrementAndGet(); + break; + } } + while (len0 > -1); } catch (NoSuchFileException nsfExc) { // System.out.println(rel + ": NoSuchFileException");