我需要一种非常快速的方法,将文件中的文本复制到HttpServletResponse的正文中。
实际上,我正在通过循环逐字节地从BufferedReader复制到response.getWriter(),但我相信必须有一种更快捷和更直接的方法来完成此操作。
谢谢!
我需要一种非常快速的方法,将文件中的文本复制到HttpServletResponse的正文中。
实际上,我正在通过循环逐字节地从BufferedReader复制到response.getWriter(),但我相信必须有一种更快捷和更直接的方法来完成此操作。
谢谢!
我喜欢使用接受字节数组的read()方法,因为您可以调整大小并改变性能。
public static void copy(InputStream is, OutputStream os) throws IOException {
byte buffer[] = new byte[8192];
int bytesRead;
BufferedInputStream bis = new BufferedInputStream(is);
while ((bytesRead = bis.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
is.close();
os.flush();
os.close();
}
您没有必要自己处理这些事情。这是一个常见的需求,已经存在经过实战检验和优化的开源解决方案。
Apache Commons IO有一个IOUtils类,其中包含一系列静态复制方法。也许您可以使用:
IOUtils.copy(reader, writer);
的意思是将一个输入流(Reader)中的内容复制到一个输出流(Writer)中。这个方法在IT技术中被广泛使用。 // Send the file.
OutputStream out = response.getOutputStream();
BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
byte[] buf = new byte[4 * 1024]; // 4K buffer
int bytesRead;
while ((bytesRead = is.read(buf)) != -1) {
out.write(buf, 0, bytesRead);
}
is.close();
out.flush();
out.close();