[問題] 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