【发布时间】:2020-12-11 21:10:05
【问题描述】:
我正在开发一个文件加密程序。我正在使用下面的功能来加密文件 直到我意识到它不适合大的;因为它将所有文件内容读入内存。现在,我需要创建一个可以分块读取和写入文件内容的函数。我该怎么做?
private fun encryptFile(file: File) {
val originalData = file.readBytes()
val encryptData = encrypt(originalData)
encryptData?.run {
file.writeBytes(this)
}
}
【问题讨论】:
-
encrypt()方法是否处理块? -
@Andreas 不,它只是获取一个 ByteArray,对其进行加密,然后返回一个新的 ByteArray。
-
许多文件加密程序使用 CipherOutputStreams 运行,因为它们支持缓冲加密(“块”)。搜索例如“Java CipherOutputStream AES CBC”