【发布时间】:2012-12-05 03:54:23
【问题描述】:
我正在尝试将从输入流(从套接字)接收到的数据(特别是图像)保存到字节数组中。 我检查了两个选项:
一个。使用java.io.ByteArrayOutputStream,然后使用如下代码:
InputStream in = socket.getInputStream();
byte[] imageInBytes = in.toByteArray();
问题在于eclipse无法识别方法toByteArray()。如何将InputStream(在本例中为in)复制/更改为ByteArrayOutputStream,以便使用该方法?
b.使用org.apache.commons.io.IOUtils,然后使用以下内容:
InputStream in = socket.getInputStream();
byte[] imageInBytes = IOUtils.toByteArray(in);
我在java构建路径中添加了commons-io-2.4.jar,并复制到/libs目录下,但还是没有按照预想的那样做,由于byte[] imageInBytes = IOUtils.toByteArray(in);报错。
顺便说一句,我正在使用姜饼。
对于这两种情况,我都想知道我是否做得对,以及如何解决上述问题。
【问题讨论】:
-
InputStream.read(byte[] buffer)... developer.android.com/reference/java/io/… -
使用InputStream.read(byte[] buffer)的问题是传入流的大小未知,为了设置buffer的大小。
-
检查循环中流上有多少字节可用 => 创建该大小的字节数组 => 填充数组;一块一块地,你会得到一切。只要弄清楚如何包装它。一旦 InputStream.available() 返回 0,退出循环。
标签: java android arrays sockets save