我使用commons VFS通过sftp传输文件。复制完成后,我想比较源文件和目标文件的校验和。
如何在java中找到远程文件的校验和?对于本地文件,我使用FileUtils.checksum()
。
答案 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();
}