diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MinecraftInstanceTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MinecraftInstanceTask.java index 3c7a4c923..83523bebc 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MinecraftInstanceTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/mod/MinecraftInstanceTask.java @@ -63,7 +63,7 @@ public final class MinecraftInstanceTask extends Task { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { String relativePath = root.relativize(file).normalize().toString(); - overrides.add(new ModpackConfiguration.FileInformation(relativePath, encodeHex(digest("SHA-1", Files.newInputStream(file))))); + overrides.add(new ModpackConfiguration.FileInformation(relativePath, encodeHex(digest("SHA-1", file)))); return FileVisitResult.CONTINUE; } }); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/DigestUtils.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/DigestUtils.java index 07b1320e4..6f1656840 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/DigestUtils.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/DigestUtils.java @@ -19,6 +19,8 @@ package org.jackhuang.hmcl.util; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -51,6 +53,12 @@ public final class DigestUtils { return getDigest(algorithm).digest(data); } + public static byte[] digest(String algorithm, Path path) throws IOException { + try (InputStream is = Files.newInputStream(path)) { + return digest(algorithm, is); + } + } + public static byte[] digest(String algorithm, InputStream data) throws IOException { return digest(getDigest(algorithm), data); }