这是代码,但收到错误:
bin = new ByteArrayInputStream(socket.getInputStream());
是否可以从套接字使用byte[]
接收ByteArrayInputStream
?
答案 0 :(得分:22)
没有。如果有一个字节数组,则使用ByteArrayInputStream
,并且要从数组中读取,就好像它是一个文件一样。如果您只想从套接字读取字节数组,请执行以下操作:
InputStream stream = socket.getInputStream();
byte[] data = new byte[100];
int count = stream.read(data);
变量count
将包含实际读取的字节数,数据当然将在数组data
中。
答案 1 :(得分:10)
通过直接从套接字读取,您无法获得ByteArrayInputStream
的实例
您需要先读取并查找字节内容
然后使用它来创建ByteArrayInputStream
的实例。
InputStream inputStream = socket.getInputStream();
// read from the stream
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] content = new byte[ 2048 ];
int bytesRead = -1;
while( ( bytesRead = inputStream.read( content ) ) != -1 ) {
baos.write( content, 0, bytesRead );
} // while
现在,由于你手头有宝,我认为你还不需要bais
个实例
但是,为了完成它,
你可以生成字节数组输入流,如下所示
ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() );