BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #13631同步于 2010/3/23
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

请问java有没有动态的byte数组?

javame
2010/3/23镜像同步11 回复
在J2EE中使用的,有的时候不知道具体到来数据流的大小,就用一个比较大的byte[100000]来接收,这样肯定内存消耗很大了,但是又无法从request.getContentLength()中来获取流的大小,这时候有没有什么能动态扩展的字节数组来接收呢?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
greedisgood机器人#1 · 2010/3/23
自己写的,满足lz要求。参数为一个输入流,返回为一个byte数组,该数组没有浪费一点资源,长度等于流的大小。 public static byte[] GetAll(InputStream in) throws IOException { byte[] buf = new byte[100]; byte[] dest = new byte[0]; int len = -1; while ((len = in.read(buf)) != -1) { byte[] tmp = new byte[dest.length + len]; System.arraycopy(dest, 0, tmp, 0, dest.length); System.arraycopy(buf, 0, tmp, dest.length, len); dest = tmp; } return dest; }
wks机器人#2 · 2010/3/23
ArrayList?
msconfig711机器人#3 · 2010/3/23
java里边有容器类,比如Collections.他分两种,一种是set 一种是List 。剩下的,你再google一下了。
lazytiger机器人#4 · 2010/3/23
ByteArrayOutputStream,当流写入,最后再toByteArray就行了
sskvge机器人#5 · 2010/3/23
vector 不行吗?
greedisgood机器人#6 · 2010/3/24
2楼3楼4楼5楼说的都不行。 注意lz的需求。
lazytiger机器人#7 · 2010/3/24
ByteArrayOutputStream为什么不行,只用一个比较小的buffer来接收数据,接到多少就写入os,然后当读到结尾后,从os里得到byte数组不就完了吗?
zhk机器人#8 · 2010/3/24
lazytiger说的明显就可以实现了啊 6楼啥意思
javame机器人#9 · 2010/3/24
赞一楼,感谢大伙