相关文章推荐

项目中有需要发送带附件的邮件。附件是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: public void contextPrepared(ConfigurableApplicationContext context) { //判断上下文环境是ServletWebServer环境 if(context instanceof AnnotationConfigServletWebServerApplicationContext) { //从上下文环境中获取总配置信息 MutablePropertySources mutablePropertySources = context.getEnvironment().getPropertySources(); //获取nacos配置信息 PropertySource<?> propertySource = mutablePropertySources.get("bootstrapProperties-toc-test.yml,dev"); //获取nacos配置信息中的配置信息(包装了好几层) Map<String, String> source = (Map<String, String>) propertySource.getSource(); for (String key : source.keySet()) { //修改值 if ("spring.datasource.dynamic.datasource.master.password".equals(key)) { source.put("spring.datasource.dynamic.datasource.master.password", "想要修改的值");}}}} java springboot本地调试动态修改nacos配置信息 qq_42755258: 修改获取参数的方法,就可以了 java 24种设计模式 天蓝999: 可以的,我看的另一个神仙级Java设计模式实战,它结合SpringBoot,我彻底学会了Java设计模式及其应用,见:https://blog.csdn.net/feiying0canglang/article/details/131900171 【tomcat源码分析】tocmat工作原理 逐知逐行: 引用「List<servlet> servlet  所有的servlet」 每个wrapper应该是对应一个Servlet? webFlux框架webClient请求数据报错:Exceeded limit on max bytes to buffer : 262144 Mr_Zhang_L: 丢,还得是你啊,网上其他的全是前面那几个配置,假的很,感觉跟互相抄的似的
 
推荐文章