大家好,我遇到了一個問題。更新下:其實outputstream.write就是附加操作,而不是重寫。舉例來說,第一次write并且flush以后,后面再flush也能推送到客戶端,而且是追加。我的問題是,后面追加的操作沒能寫入到第一次生成的excel中。在資源管理器中看文件大小是28kb,打開后再關閉就變成了8kb。原問題:客戶端想要下載excel文件,我從數(shù)據(jù)庫里找到,然后用apachepoi生成bytearray,設置好響應頭,再傳回客戶端,客戶端就可以下載。問題就是,有時候生成這個excel的耗時比較長,瀏覽器沒收到響應,就504超時了。我想著能不能生成一部分,發(fā)送一部分,這樣連接就建立起來了。一直到所有的內容都生成了,再關閉連接。我用的是servlet.getOutputStream(),沒找到類似append的方法,PrinterWriter類有類似的方法,但是我試了一下,這樣傳回客戶端的沒法打開,應該是只能傳二進制回去吧?我還試了一下socket,但是也需要用socket.getOutputStream();的方法獲取輸出流,這樣又繞回來了。所以來這里請教下各位,有沒有其它方式能實現(xiàn)我這需求,還是這個需求就是不可實現(xiàn)的?如果有更好的方法,還請賜教。謝謝!
Java outputstream 有可以實現(xiàn) append 的方式嗎?
尚方寶劍之說
2019-05-11 17:03:09