gpt4 book ai didi

java - 如何正确读取CipherInputStream?

转载 作者:行者123 更新时间:2023-12-01 13:52:34 25 4
gpt4 key购买 nike

我有一个使用 CipherOutputStream 加密的文件(使用 AES key )。加密工作完美。现在我想解密这个文件并保存为另一个文件。我使用两个流来做到这一点。使用适当的 key 数据从 FileInputStream 初始化 CipherInputStream,并从文件名初始化 FileOutputStream。我使用这个方法来复制文件:

private static void copyStreams(InputStream is, OutputStream os) throws IOException {
byte[] buffer = new byte[1024 * 10];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
}

问题:length 始终等于缓冲区长度(如果文件大于缓冲区)。因此它永远不会结束。这是一个无限循环。

我认为问题出在我检测输入流结束的方式上。我应该如何正确地将一个流复制到另一个流?

提前致谢!

最佳答案

InputStreamread 方法可以返回 0,表示尽管下一次调用 read,但尚未读取任何字节code> 可能会返回更多字节。您的情况应该反射(reflect)出这一点。

while ((length = is.read(buffer)) >= 0) {
os.write(buffer, 0, length);
}

关于java - 如何正确读取CipherInputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com