前言
为了实现像ChatGPT一样的效果:文字进行逐个显示,后端返回的时候需要以流的形式。
一、字符串流
@PostMapping("returnStream")
public void returnStream(HttpServletResponse response) throws IOException {
String message = "我是一段等待已流形式返回的文字";
// 以流的形式返回
ServletOutputStream out = null;
ByteArrayOutputStream baos = null;
try {
InputStream inStream = new ByteArrayInputStream(message.getBytes());
byte[] buffer = new byte[1024];
int len;
baos = new ByteArrayOutputStream();
while ((len = inStream.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
out = response.getOutputStream();
out.write(baos.toByteArray());
} catch (Exception e) {
e.printStackTrace();
} finally {
Objects.requireNonNull(baos).flush();
baos.close();
Objects.requireNonNull(out).flush();
out.close();
}
}
二、文件流
ServletOutputStream out = null;
ByteArrayOutputStream baos = null;
try {
File file=new File(filename);
InputStream inStream=new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
baos = new ByteArrayOutputStream();
while ((len = inStream.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
out = response.getOutputStream();
out.write(baos.toByteArray());
} catch (Exception e) {
e.printStackTrace();
} finally {
baos.flush();
baos.close();
out.flush();
out.close();
}
到此这篇关于Java流形式返回前端的实现示例的文章就介绍到这了,更多相关Java流形式返回前端内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!