项目中有需要发送带附件的邮件。附件是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输出流
项目中有需要发送带附件的邮件。附件是excel。我用poi的对象HSSFWorkbook生成了excel,但是它只有write方法,接收的参数是输出流(OutputStream抽象类)。发邮件使用的是spring框架的MimeMessageHelper对象,接收的参数是输入流(inputStreamSource抽象类)。我把OutputStream已经转换成了InputStreamSo...
Java:字节输入流、字节输出流当代码编码和文件编码不一致时,读入的文件内容会产生乱码。可以通过转换流来解决。先提取文件的原始字节流,然后用字符输入流转换为需要的编码。代码示例
字符输出转换流
如果需要控制写出去的字符使用的编码,怎么办?
1.可以把字符以指定编码获取字节后再使用字节输出流写出去:“我爱你中国”.getBytes(编码);
2.也可以使用字符输出转换流实现;代码示例...
1、转换流属于处理流
InputStreamReader :将一个字节的输入流转换为字符的输入流
InputStreamWriter:将一个字符的输出流转换为字节的输出流
2、提供字节流与字符流之间的转换
3、解码:字节、字节数组—>字符数组,字符串
编码:字符数组,字符串---->字节,字节数组
4、字符集
一、InputStreamReader 将一个字节的输入流转换为字符的输入流
@Test
public void test1(){
InputSt
如果你曾经使用java IO编程,你会很快碰到这种情况,某个类在OutputStream上创建数据而你需要将它发送给某个需要从输入流读取数据的类。
你很快会被问道,“java中如何将OutputStream转换为InputStream?”
方法一:使用字节数组缓存数据
最简单的方法是用字节数组缓存数据。代码
ByteArrayOutputStream out...
当有输入流inputstream的数据想要写到数据流outputstream中时,这种情况比较简单,直接read inputstream然后write到outputstream中即可;
当有输出流数据需要转换成输入流使用时,就不那么直观了,我最初的想法是输出流数据写到文件中,然后读文件就转成输入流啦,但是这种利用到硬盘的方法非常不可取的,后来上网查了一下,可以通过管道流PipedStream来实...
qq_42755258:
java springboot本地调试动态修改nacos配置信息
qq_42755258:
java 24种设计模式
天蓝999:
【tomcat源码分析】tocmat工作原理
逐知逐行:
webFlux框架webClient请求数据报错:Exceeded limit on max bytes to buffer : 262144
Mr_Zhang_L: