用Java计算远程文件的校验和

时间:2014-07-22 08:00:49

标签: java sftp checksum

我使用commons VFS通过sftp传输文件。复制完成后,我想比较源文件和目标文件的校验和。

如何在java中找到远程文件的校验和?对于本地文件,我使用FileUtils.checksum()

1 个答案:

答案 0 :(得分:1)

这取决于您使用的校验和实现(例如CRC32等)。

我们以CRC32为例。您创建CRC32的实例,并使用越来越多的字节更新它。这非常适合您正在尝试执行的任务,因为只要输入流中有更多可用字节,您就可以更新。

这是一个半生不熟的例子:

public long checksumRemote(InputStream inputStream) {
    CRC32 checksum = new CRC32();
    boolean finished = false;
    byte[] buffer = new byte[4096];

    while (!finished) {
        int bytesRead = inputStream.read(buffer);
        if (bytesRead < 0) {
            finished = true;
        } else if (bytesRead > 0) {
            checksum.update(buffer, 0, bytesRead);
        }
    }

    return checksum.getValue();
}