当前位置: 首页 > 面试题库 >

用Java将二进制输入流读入单字节数组

殳俊晤
2023-03-14
问题内容

该文件说,不应使用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最简单的方法是使用番石榴及其ByteStreams类:

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

或对于文件:

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

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

请注意,无论您是否可以判断输入的长度,这种方法都有效-当然,假设您有足够的内存。



 类似资料:
  • 问题内容: 我正在使用Jersey来实现RESTful API,该API主要是检索和提供JSON编码的数据。但是在某些情况下,我需要完成以下任务: 导出可下载的文档,例如PDF,XLS,ZIP或其他二进制文件。 检索多部分数据,例如一些JSON以及上载的XLS文件 我有一个基于页面的基于JQuery的Web客户端,该客户端创建对此Web服务的AJAX调用。目前,它不进行表单提交,而是使用GET和P

  • 问题内容: 这一定很明显,但我无法弄清楚。我为此花了将近一整天。我很乐意给减轻我体重的人买啤酒。 这是我的代码。我看到字节数组大小不合适,但是我找不到正确的大小。除此之外,内容也不是不正确的。似乎只有文字字符可以。 似乎从二进制文件中删除数据确实很痛苦,我真的很沮丧。 还有一件事:文件内容不是文本,可以是图片,视频或pdf之类的东西。 问题答案: 如果你正在读一个二进制文件,你应该 不 尝试把它当

  • 问题内容: 是否可以在Python 2.6中将stdin读取为二进制数据?如果是这样,怎么办? 我在Python 3.1文档中 看到这很简单,但是在2.6中执行此操作的工具似乎并不存在。 如果3.1中描述的方法不可用,是否有办法关闭stdin并以二进制模式重新打开? 更新资料 为了清楚起见,我在MS-DOS外壳程序中使用“类型”将二进制文件的内容传递给我的python代码。据我了解,这应该等效于U

  • 本文向大家介绍如何在Java中将输入流转换为字节数组?,包括了如何在Java中将输入流转换为字节数组?的使用技巧和注意事项,需要的朋友参考一下 Java中的InputStream类提供了方法。此方法接受字节数组,并将输入流的内容读取到给定的字节数组。 示例 输出结果 替代解决方案 Apache commons提供了一个名为org.apache.commons.io的库,下面是将库添加到项目中的ma

  • 问题内容: 我试图在下面的字段中限制输入为数字 它不适用于 它适用于以下代码,但同时更改了两个字段 需要更改用户正在输入的输入字段的值,而不是两者都更改 问题答案: 使用此处找到的指令:而不是ng-change函数。复制此处以方便参考:

  • 问题内容: 我正在尝试将字节值转换为二进制以进行数据传输。基本上,我要在字节数组(“ 10101100”是单个字节)中以二进制(“ 10101100”)的形式发送类似“ AC”的值。我希望能够接收此字节并将其转换回“ 10101100”。截至目前,我还没有成功,完全不知道从哪里开始。任何帮助都会很棒。 编辑 :对所有混乱,抱歉,我没有意识到我忘记添加特定的细节。 基本上,我需要使用字节数组通过套接