我有一个大约2GB的非常大的文件,如果我一次读取它太大而我的JVM抛出了OutOfMemory错误,我想通过切成块对它进行加密。我正在使用 AES / CBC / PKCS5padding。您能推荐我一种方法吗?我读过有关CipherStreams的信息,但不确定它们是否可以工作。提前致谢! 我现在正在使用此策略,但不适用于较大的文件。
try (FileInputStream input = new FileInputStream(in);
FileOutputStream output = new FileOutputStream(out)) {
byte[] encoded = cipher.doFinal(ByteStreams.toByteArray(input));
output.write(encoded);
}
答案 0 :(得分:1)
创建一个CipherOutputStream
包装您的FileOuputStream
。
使用Files.copy()
将文件复制到此CipherOutputStream
。
完成。 阅读Javadoc了解详细信息。