Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ByteArrayInputStream从套接字接收字节[]_Java_Sockets_Io_Inputstream_Bytearrayinputstream - Fatal编程技术网

Java 使用ByteArrayInputStream从套接字接收字节[]

Java 使用ByteArrayInputStream从套接字接收字节[],java,sockets,io,inputstream,bytearrayinputstream,Java,Sockets,Io,Inputstream,Bytearrayinputstream,以下是代码,但出现错误: bin = new ByteArrayInputStream(socket.getInputStream()); 是否可以使用ByteArrayInputStream从套接字接收byte[]?否。当您有一个字节数组时,您可以使用ByteArrayInputStream,并且希望像读取文件一样从数组中读取。如果只想从套接字读取字节数组,请执行以下操作: InputStream stream = socket.getInputStream(); byte[] data =

以下是代码,但出现错误:

bin = new ByteArrayInputStream(socket.getInputStream());

是否可以使用
ByteArrayInputStream
从套接字接收
byte[]

否。当您有一个字节数组时,您可以使用
ByteArrayInputStream
,并且希望像读取文件一样从数组中读取。如果只想从套接字读取字节数组,请执行以下操作:

InputStream stream = socket.getInputStream();
byte[] data = new byte[100];
int count = stream.read(data);

变量
count
将包含实际读取的字节数,数据当然将在数组
data

中。您无法通过直接从套接字读取
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  
现在,由于您手头有BAO,我认为您不需要一个
BAI
实例。
但是,为了使它完整,
您可以生成字节数组输入流,如下所示

ByteArrayInputStream bais = new ByteArrayInputStream( baos.toByteArray() );  

但有错误:“有什么错误?始终将异常和错误输出复制/粘贴到问题中(使用代码标记)。您的问题没有意义。ByteArrayInputStream从字节数组读取字节。如果要从套接字读取,则无法从字节数组中读取。您试图解决的问题是什么?在“new byte[100]”中,数字100的意义是什么?我会对100进行过度分配还是分配不足?这是数组的大小,因此一次读取的最大字节数。您可以使用任意大小,并且可以在循环中读取,直到到达文件末尾(此时计数将变为-1)。谢谢@Ernest。这是有道理的