[问题] java io执行时出现too much byte to writ

楼主: lueichun (no anonymous)   2015-08-12 00:19:35
就是我在程式里面使用ObjectOutputStream
搭配httpExchange的方法
准备将资料从服务器端传回浏览器
但是我呼叫write()
将资料写到串流时
就会出现too many bytes to write to stream的错误
就像以下
https://dl.dropboxusercontent.com/u/63402326/%E6%93%B7%E5%8F%9617.PNG
然后我开启debugger模式去看执行状况
就发现喂入的资料的长度在一开始的时候都是正常的
就像以下
https://dl.dropboxusercontent.com/u/63402326/%E6%93%B7%E5%8F%9616.PNG
右上角有个1172的值
但是等到trace到jdk的原始码里面之后
https://dl.dropboxusercontent.com/u/63402326/%E6%93%B7%E5%8F%9615.PNG
右上角的值变成1024
不知道是不是因为这样才会出现这种错误
根据google到的结果都说是将长度表示成
string.getBytes().length的格式就可以避免这错误
但是我这样做之后还是一样
不知道大大们有什么建议吗
程式:
http://ideone.com/dKYczC
作者: DumDumGenius (准大学生)   2015-08-12 01:09:00
看有没有method可以更改最大写入长度
作者: KekeMonster (KekeMonster)   2015-08-12 11:08:00
看不懂以你的需求用ObjectOutputStream干嘛...ObjectOutputStream如名称是拿来写物件的
作者: ssccg (23)   2015-08-12 14:12:00
如楼上所说,不要乱用ObjectOutputStream,它会另外写一些物件资讯,让ObjectInputStream读取时还原用你的问题就 sendResponseHeaders 已设定content length实际去写的时候用ObjectOutputStream又多加东西长度变长直接用getResponseBody拿到的那个OutputStream就好

Links booklink

Contact Us: admin [ a t ] ucptt.com