javaWeb更改文件后下载的文件没有变化

BUG描述
实现javaWeb下载文件功能。将数据存储在session中,然后读取用jExcelAPI(jxl)开源组件生成一个excel表,然后用户下载这个excel。我实现下载是用a标签直接指向该文件,如下

<a href="文件的路径" target="_blank"></a>

但是出现了一个问题,每次session中存储的数据产生变化,重新生成excel表之后,下载的excel表使原先那一个。之后我在IDEA(集成开发环境的编译器)查看后,该excel表已被改变。但我是想下载存在session中最新的那部分数据。

解决方法
实现下载有两种方法,一种直接指向想要下载的文件路径。另一种使用servlet来实现,实现的部分代码如下。

File file = new File("该文件的路径");
response.setContentType(getServletContext().getMimeType(file.getName()));
        InputStream is = new FileInputStream(file);
        OutputStream os = response.getOutputStream();
        int b;
        while((b=is.read()) != -1) {
            os.write(b);
        }
        is.close();
        os.close();

我用了后一种方法之后,解决了这个问题。我猜测是第一种方法会读取编译器(IDEA)或者tomcat缓存了的这个文件,而无法读取到最新的文件。只有重启tomcat之后,才可以读取到。而第二种方法每次都是直接访问那个文件,不通过缓存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值