gpt4 book ai didi

java - 为什么他们在从输入流读取时使用 "while"语句?

转载 作者:行者123 更新时间:2023-11-30 04:14:20 25 4
gpt4 key购买 nike

我在 android.com 上找到了这段小代码:

MessageDigest digester = MessageDigest.getInstance("MD5");
byte[] bytes = new byte[8192];
int byteCount;
while ((byteCount = in.read(bytes)) > 0) {
digester.update(bytes, 0, byteCount);
}
byte[] digest = digester.digest();

我的问题是:如果我用“if”替换“while”会发生什么?

最佳答案

android.com 上的示例代码展示了如何从 InputStream 生成 MD5 哈希值。您不知道流中有多少字节,对吗?只要你不知道这一点,你就必须循环。

现在回答你的问题:

My question is: what would happen if I replace "while" with "if" ?

您只能在提供 8192 或更少字节的输入流上生成 MD5 哈希值。

或者用另一种方式表达:

MD5 哈希可能仅在输入流的 8192 字节以内有效。

注意:InputStream 只能读取当前可用的字节数。因此,即使 InputStream 的源包含超过 8192 个字节,read(byte[8192]) 也可能只读取 10 个、5 个字节,甚至没有读取任何字节。

另请参阅 U Mad 的评论。

关于java - 为什么他们在从输入流读取时使用 "while"语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18779113/

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