public static void salvageCopy(File brokenZip, File salvagedZip) throws IOException {
        try (InputStream is = Files.newInputStream(brokenZip.toPath())) {
            salvageCopy(is, salvagedZip, false);
        }
    }
This streams the broken zip and rebuilds a new zip that
is at least a valid zip file.  The contents of the final stream
may be truncated, but the result should be a valid zip file.
<p>
This does nothing fancy to fix the underlying broken zip.
<p>
This will close the inputstream

@param brokenZip
@param salvagedZip
@param allowStoredEntries
@throws java.io.IOException
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-zip-commons/src/main/java/org/apache/tika/zip/utils/ZipSalvager.java