这是一段将PDF文件输出到浏览器的代码,它可以更快吗? 这是在Java servlet中实现的。
private ByteArrayOutputStream getByteArrayOutputStreamFromFile(File file) throws Exception {
BufferedInputStream bis = null;
ByteArrayOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(file));
bos = new ByteArrayOutputStream();
byte[] byteContent = new byte[1024 * 1024];
int len = 0;
while ((len = bis.read(byteContent)) != -1) {
bos.write(byteContent, 0, len);
}
return bos;
} catch (Exception ex) {
throw ex;
} finally {
if (bis != null) {
bis.close();
}
if (bos != null) {
bos.close();
}
}
}
答案 0 :(得分:5)
response.setContentType("application/pdf");
ServletContext ctx = getServletContext();
InputStream is = ctx.getResourceAsStream("/erp.pdf");
int read =0;
byte[] bytes = new byte[1024];
OutputStream os = response.getOutputStream();
while((read = is.read(bytes)) != -1)
{
os.write(bytes, 0, read);
}
os.flush();
os.close();
答案 1 :(得分:5)
使用Google Guava,您可以在一行中汇总:
import com.google.common.io.Files;
private OutputStream getOutputStream(File file) throws IOException {
return Files.newOutputStreamSupplier(file).getOutput();
}
答案 2 :(得分:0)
建议:
始终关注Apache Commons FileUtils等库。它们提供简单易用的方法。
您还可以省略BufferedOutputStream,因为您已经在使用缓冲区。但这不会产生很大的影响。尝试使用nio而不是流。这可能会有所不同。
另请注意:How to download and save a file from Internet using Java?可能对您有所帮助。