private String sha2OfBigger(File f) {
try (FileChannel ch = new RandomAccessFile(f, "r").getChannel()) {
int size = (int) Math.min(f.length(), Integer.MAX_VALUE);
MappedByteBuffer byteBuffer // 2G
= ch.map(FileChannel.MapMode.READ_ONLY, 0, size);
MessageDigest sha2 = MessageDigest.getInstance("SHA-256");
long offset = 0;
byte[] array = new byte[Integer.MAX_VALUE >> 2];
while (size != 0) {
while (byteBuffer.remaining() > 0) {
int numInArray = Math.min(array.length, byteBuffer.remaining());
byteBuffer.get(array, 0, numInArray);
sha2.update(array, 0, numInArray);
}
offset += size;
size = (int) Math.min(Integer.MAX_VALUE, f.length() - offset);
byteBuffer = ch.map(FileChannel.MapMode.READ_ONLY, offset, size);
}
return new HexBinaryAdapter().marshal(sha2.digest());
} catch (IOException | NoSuchAlgorithmException e) {
e.printStackTrace();
return "\\";
}
}
DuplicatedFiles.java 文件源码
java
阅读 22
收藏 0
点赞 0
评论 0
项目:KeepTry
作者:
评论列表
文章目录