java输出流转输入流

项目中有需要发送带附件的邮件。附件是excel。

我用poi的对象HSSFWorkbook生成了excel,但是它只有write方法,接收的参数是输出流(OutputStream抽象类)。

发邮件使用的是spring框架的MimeMessageHelper对象,接收的参数是输入流(inputStreamSource抽象类)。

我把OutputStream转换成InputStreamSource的做法是:

		 HSSFWorkbook wkb=new HSSFWorkbook(new FileInputStream(templateDir + "/caseBillArrivedReminder.xls"));
        //省略部分赋值内容……
        ByteArrayOutputStream arrayOutputStream = null;
		OutputStream output = null;
		try {
			arrayOutputStream = new ByteArrayOutputStream();//创建一个ByteArray输出流
			output=new BufferedOutputStream(arrayOutputStream);//用buffered包装一下
			wkb.write(output);//把HSSFWorkbook内容写入ByteArray输出流中
			output.flush();//清空缓冲区
			InputStreamSource inputStreamSource = new ByteArrayResource(arrayOutputStream.toByteArray());//创建ByteArrayResource用ByteArray输出流的字节数组
                //至此把OutputStream已经转换成了InputStreamSource 
                //省略其他……
		} finally {
			if(output!=null){
				output.close();//关闭BufferedOutputStream输出流
			}
			if(arrayOutputStream!=null){
				arrayOutputStream.close();//关闭ByteArray输出流
			}
		}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值