版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
最近做的一个项目,需要从网口拿到数据,然后从Socket中取出数据并放入到 byte[] 中 ,收到的数据并不是字符串
一开始使用byte[] buf=new byte[100]; 来事先定义长度,长度太长会导致后面多了很多0,长度不好控制。
然后从网上找到的一个,先定义100,然后读完之后知道长度后再重新定义长度,但是试过之后发现数据结果不唯一,也就是数据
会出现错误。
byte[] buf=new byte[100];
int len=socket.getInputStream().read(buf);
byte[] buf1=new byte[len];
socket.getInputStream().read(buf1);
最后在进去Socket.getInputStream()类里面找到一个获取流大小的方法available(),如下:
List<InputStream> inputList = new ArrayList<InputStream>(); InputStream in = c_Socket.getInputStream(); inputList.add(in); byte[] b = new byte[inputList.get(i).available()]; int i = inputList.get(i).read(b);