我目前的應用程序需要讀取數據並使用戶能夠將其作爲文件下載。 服務器端代碼是與此類似:https://stackoverflow.com/a/55788/3192744 我需要裏面的InputStream的數據,我目前的方法獲取InputStream爲:如何將數據放入Java InputStream中?
InputStream getIStream(){
StringBuilder sb = new StringBuilder();
String temp = 「」;
while(//there is data to be read from database//){
temp = //partial data or one entry from database
//some other modification in temp
sb.append(temp).append(「\n」);
}
exampleString = sb.toString();
InputStream stream = new ByteArrayInputStream(exampleString.getBytes());
}
此方法適用於現在,因爲我的數據是非常小的,大約1000串,每大約100個字符,因此100000個字符。不過,在我開始下載之前,我需要等待整個數據寫入一個字符串。另外隨着我的數據量增加,它不適合一個字符串。 那麼是否有可能在while循環中更新InputStream。
爲了讀取服務器端的數據,我正在等待返回InputStream的方法,因此可以將InputStream作爲方法參數發送,並在更新時繼續讀取它。
基本上我想實現類似管道的東西,其中發送來自數據庫輸出的修改字符串,並且在接收端將數據放入用於用戶下載的文件中,並且用戶的下載過程可以在數據正在從數據庫中讀取。
我不知道這是否會解決你的問題,但因爲你似乎只寫文本數據,你可以使用而是使用servlet的PrinterWriter,爲檢索到的每個部分數據調用它的'println(String str)'方法。在這種情況下,您可以通過ServletResponse.getWriter()而不是使用ServletResponse.getOutputStream()來檢索PrinterWriter,而不需要使用StringBuilder和InputStream。 – Aaron
正如@Aaron所說,你的問題沒有得到'InputStream'。你應該得到'OutputStream'(或'Writer'),你可以在數據庫中讀取數據的時候輸出數據。 – Kayaman