在 Java 中将二进制输入流读入单个字节数组

2023-11-30

文档说不应该使用available()确定尺寸的方法InputStream。我怎样才能阅读一篇文章的全部内容InputStream到字节数组中?

InputStream in; //assuming already present
byte[] data = new byte[in.available()];
in.read(data);//now data is filled with the whole content of the InputStream

我可以多次读取固定大小的缓冲区,但是随后,我必须将读取的数据合并到单个字节数组中,这对我来说是一个问题。


IMO 最简单的方法是使用Guava和它的ByteStreams class:

byte[] bytes = ByteStreams.toByteArray(in);

或者对于文件:

byte[] bytes = Files.toByteArray(file);

或者(如果您不想使用 Guava),您可以创建一个ByteArrayOutputStream,并重复读入字节数组并写入ByteArrayOutputStream(让它处理调整大小),然后调用ByteArrayOutputStream.toByteArray().

请注意,无论您是否知道输入的长度,这种方法都有效 - 当然,前提是您有足够的内存。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java 中将二进制输入流读入单个字节数组 的相关文章

随机推荐

  • 在Android中使用ActionBarSherlock时如何在ActionBar选项卡上绘图?

    我在用动作栏夏洛克为 HoneyComb 之前的设备提供 ActionBar 我的活动有四个片段 即 1 用户 2 聊天 3 视频 4 额外 参见图片 我使用以下代码创建了actionBar actionBar getSupportActi
  • 从 YouTube URL 获取视频 ID?

    假设我有一个 ID 列表 如下所示 http www youtube com watch v KMU0tzLwhbE http youtu be KMU0tzLwhbE http www youtube com watch v KMU0tz
  • 使用 EXC_BAD_INSTRUCTION 在空扩展中断中声明符合 @objc 协议

    在将 Swift 协议与数组结合使用时遇到了很多很多麻烦 但在 Playground 中出现问题之前我什至无法重现整个问题 这是一个最小的例子 我有两个协议和一个类Bus它声明符合其中一项协议 另外 一个空的扩展Bus声明与其他协议的一致性
  • 外键死锁时如何删除记录?

    我有两张桌子p and u如下 PostgreSQL 9 3 CREATE TABLE p pid integer NOT NULL uid integer CONSTRAINT p fkey FOREIGN KEY uid REFEREN
  • Windows 应用商店应用程序:证书中的主机名无效或不匹配

    在我的 Windows 8 1 应用程序中 当我调用 Web 服务时 出现以下异常 证书中的主机名无效或不匹配 我使用的代码 HttpBaseProtocolFilter filter new HttpBaseProtocolFilter
  • 任务不等待ContinueWith完成

    我有控制台应用程序和代码如下 我的问题是在ContinueWith任务完成之前 控制台应用程序结束 它不等待ContinueWith完成 请告知 请让我知道我遗漏或不正确的内容 var task1 Task
  • 获取字符码值大于十六进制“FFFF”的 Unicode 字符

    Issue The ChrWcharcode 参数是Long标识一个字符 但不允许值大于 65535 十六进制值 HFFFF see MS Help 例如各种符号和象形文字可以在以下位置找到Unicode 十六进制块 1F300 1F5FF
  • 如何使用 SSL 使我的网站有效?

    我有一个网站 位于具有专用 IP 的专用服务器上 并且安装了 SSL 证书 并且有效 当我访问我的网站并输入 https 而不是 http 时 我的网站仅部分加载 因为 google chrome 说我的网站有一些不安全的数据 我的网站尚未
  • 如何检测与预制件子项的碰撞

    我已经开始学习 Unity 并决定做一些练习 所以 我认为开发 Flappy Bird 作为一个实验会很棒 但我遇到了这个问题 您知道 当您在管道之间飞行时 您可以获得积分 为此 我制作了一个带有两个管道的预制件以及它们之间的一个空游戏对象
  • 使用 Jsoup 来 POST 登录数据

    我正在尝试登录这个网站 http deeproute com 这是我的代码 Connection Response res null Connection homeConnection null Document homePage null
  • 我可以搜索 Netbeans 的本地历史记录吗?

    在 Netbeans 项目中的一个文件的早期版本之一中 我编写了后来删除的代码 现在我想检索它 但是现在当我手动转到以前的版本时我找不到它 因为我在这个文件的本地历史记录中有很多版本 而且我不记得我到底什么时候编写了这段代码 有没有办法对此
  • Facebook 聊天机器人(PHP webhook)发送多个回复

    我的 Facebook 聊天机器人正在运行 但在我向它发送初始消息后 它会发回多条消息 这是我的 webhook 脚本 我很欣赏这是一个非常粗糙的工作示例 challenge REQUEST hub challenge verify tok
  • 这些结果类型存在“...”的重载:ClosedRange、CountableClosedRange

    Swift 2 let gap CGFloat randomInRange StackGapMinWidth maxGap 调用中缺少参数标签 范围 Swift 3 新错误 let gap CGFloat randomInRange ran
  • 拆分变量的第一个字母

    我需要从变量 name 中拆分第一个字母 我怎样才能做到呢 name userData name 我怎样才能得到第一封信 请检查是否正确 if userData gender male if firstletter i picture Im
  • MySQL 中的 BULK INSERT 问题

    我在执行批量插入时遇到以下 SQL 命令错误 BULK INSERT libra faculty FROM d faculty csv WITH FIELDTERMINATOR ROWTERMINATOR n 这是错误消息 ERROR 10
  • 我可以将文件添加到本地 Git 存储库但不将其推送到远程吗

    我有许多大型视频文件 我不想将其推送到远程 但我确实想将它们添加到本地存储库 有点像远程版本 gitignore file 那可能吗 更具体地说 我正在开发一个多媒体项目 一个文件夹包含项目元数据文件 它是一个 Screenflow 项目
  • ggplot 中的反向日期时间(POSIXct 数据)轴

    我正在尝试使用 ggplot 创建 POSIXct 时间图 并且想反转轴 但正在努力使其工作 我一直在使用scale y datetime 因为在我的实际应用程序中 控制该轴上的中断非常重要 这是我的问题的一个例子 首先是正常排序 然后是我
  • 获取 Android 设备的永久唯一 ID

    我有一个应用程序 我想在其中使用唯一 ID 来识别设备 我尝试了多种解决方案 但在手机重置后唯一 ID 发生了变化 如 ANDROID ID 我使用了下面的 StackOverflow 链接 但现在不可用 Android 设备有唯一的 ID
  • Matlab加载库错误

    我打算将OpenCV 1 1版本和Matlab2011一起使用 该程序使用调用来加载库 但是 它返回一个错误 gt In loadlibrary at 347 In Untitled at 4 Error using loadlibrary
  • 在 Java 中将二进制输入流读入单个字节数组

    文档说不应该使用available 确定尺寸的方法InputStream 我怎样才能阅读一篇文章的全部内容InputStream到字节数组中 InputStream in assuming already present byte data