下载文件的推荐写法

本文介绍了一种使用BufferedInputStream和BufferedOutputStream优化文件下载的方法,通过设置合理的缓冲区大小(如8K或16K)来提高IO效率,并确保在finally块中关闭流资源。此外,还展示了如何设置HTTP响应头以正确显示下载文件的名称和大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Content-Length 能在浏览器中显示下载文件的大小
BufferedOutputStream BufferedInputStream 能优化io流
buffer 一般设置成8k 16k
在finally中close掉io



resp.setHeader("Content-Disposition", "inline; filename="
+ URLEncoder.encode(downFilename, "UTF-8"));
resp.setHeader("Content-Length", String.valueOf(file.length()));

OutputStream out = resp.getOutputStream();
BufferedOutputStream bout = new BufferedOutputStream(out);

InputStream in = new FileInputStream(file);
BufferedInputStream bin = new BufferedInputStream(in);

byte[] buffer = new byte[16 * 1024];
int i = -1;
try {
while ((i = in.read(buffer)) != -1) {
bout.write(buffer, 0, i);
}
} catch (Exception e) {

}finally{
try {
bin.close();
} catch (Exception ignore) {
}

try {
bout.close();
} catch (Exception ignore) {
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值