第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java outputstream 有可以實(shí)現(xiàn) append 的方式嗎?

Java outputstream 有可以實(shí)現(xiàn) append 的方式嗎?

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

2 回答

?
慕森卡

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個贊

可以實(shí)現(xiàn)的,但是比較麻煩,因?yàn)槟阌胮oi只能得到一個outputstream,而如果想用流方式提供給客戶端下載,需要有一個inputstream,所以你需要一個PipedInputStream,然后把outputstream轉(zhuǎn)換為一個inputstream,然后你還需要準(zhǔn)備一個單獨(dú)的線程去實(shí)現(xiàn)poi的操作,否則在同一個線程里,你沒辦法同時對outputstream和inputstream進(jìn)行操作,所以還是比較麻煩,但可以做到。代碼的例子沒有找到合適的,你可以看看PipedInputStream/PipedOutputStream的相關(guān)文檔。
                            
查看完整回答
反對 回復(fù) 2019-05-11
?
ibeautiful

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個贊

你可以先返回一個頁面就像平時下載文件的數(shù)據(jù)處理中下載將在一分鐘后開始....之類的把處理完的文件保存起來,時間到把鏈接顯示出來,或者自動請求,然后請求來的時候把文件發(fā)過去
處理時間不長的話,也可以試著把超時時間設(shè)長一點(diǎn)
                            
查看完整回答
反對 回復(fù) 2019-05-11
  • 2 回答
  • 0 關(guān)注
  • 673 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號