DuplicatedFiles.java 文件源码

java
阅读 22 收藏 0 点赞 0 评论 0

项目:KeepTry 作者:
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 "\\";
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号