mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-24 21:29:00 +00:00

Look, this will make the git history look funny, but trimming unnecessary depth from the source tree is a very necessary sanity-preserving measure when dealing with a super-modularized codebase like this one. While it makes the project configuration a bit less conventional, it will save you several clicks every time you jump between modules. Which you'll do a lot, because it's *modul*ar. The src/main/java convention makes a lot of sense for a non-modular project though. This ain't that.
26 lines
660 B
Java
26 lines
660 B
Java
package nu.marginalia.sideload;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.ByteBuffer;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.util.zip.CRC32;
|
|
|
|
public class SideloadHelper {
|
|
public static String getCrc32FileHash(Path file) throws IOException {
|
|
ByteBuffer buffer = ByteBuffer.allocate(8192);
|
|
|
|
try (var channel = Files.newByteChannel(file)) {
|
|
CRC32 crc = new CRC32();
|
|
|
|
while (channel.read(buffer) > 0) {
|
|
buffer.flip();
|
|
crc.update(buffer);
|
|
buffer.clear();
|
|
}
|
|
|
|
return Long.toHexString(crc.getValue());
|
|
}
|
|
}
|
|
}
|