Java InputStream 中的 read() 和 readNBytes():究竟有什么区别?

ID:17287 / 打印

java inputstream 中的 read() 和 readnbytes():究竟有什么区别?

从 java 的 InputStream 中读取数据:read() 与 readNBytes() 的区别

java 的 InputStream 提供了两种常见方法 read() 和 readNBytes() 来读取数据。虽然两者都被用于从流中读取字节,但它们有一些关键的区别。

read() 方法:

  • 一次读取最多指定长度的字节。
  • 返回实际读取的字节数或 -1(如果流已结束)。
  • 该方法在流的末尾调用时,返回 -1。

readNBytes() 方法:

立即学习“Java免费学习笔记(深入)”;

  • 尝试读取指定长度的字节。
  • 如果流已结束,则返回实际读取的字节数,当流中没有字节时返回 0。
  • 该方法会多次调用 read() 直到读取到指定长度的字节或到达流的末尾。

关键区别:

  • 读取的字节数:read() 可能会读取比指定长度更少的字节,而 readNBytes() 会尝试读取指定长度的字节。
  • 返回值:read() 返回实际读取的字节数或 -1,而 readNBytes() 返回实际读取的字节数或 0(如果流已结束)。
  • 行为上的差异:read() 不会尝试读取流中剩余的所有字节,而 readNBytes() 会。

总之,readNBytes() 比 read() 更贪婪,因为它会尝试读取尽可能多的字节。readNBytes() 的实现也更复杂,因为它需要在内部循环调用 read() 直到达到指定长度或流的末尾。

上一篇: 如何使用 Java 工具类执行数据库脚本文件?
下一篇: 如何利用Java实现批量简历下载?

作者:admin @ 24资源网   2024-11-27

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。