自学-java动态文件创建下载

在JAVA WEB学习中,尝试不使用框架实现根据模板动态创建并下载Word文档。通过将原始Word保存为XML,读取内容,进行字符串替换生成临时文件。对可能产生的内存占用和释放时机存疑,寻求解决方案。
摘要由CSDN通过智能技术生成

 在学习JAVA做WEB,开始学习,没有使用框架。

在学习过程中,想根据根据模板动态生成word。然后供用户下载。

先把原始WORD保存为XML格式,然后读取,并生成。

网上搜了一个函数读取文件转成string。然后可以再替换String 里的东西,就是新的临时文件。但是不知道这样会不会占用很多内存,什么时候释放内存也不是太清楚,如果有知道的请告知一下。

  public static String file2String(File f, String charset) { 
        String result = null; 
        try { 
                result = stream2String(new FileInputStream(f), charset); 
        } catch (FileNotFoundException e) { 
                e.printStackTrace(); 
        } 
        return result; 
    } 

 
    public static String stream2String(InputStream in, String charset) { 
            StringBuffer sb = new StringBuffer(); 
            try { 
                    Reader r = new InputStreamReader(in, charset); 
                    int length = 0; 
                    for (char[] c = new char[1024]; (length = r.read(c)) != -1;) { 
                            sb.append(c, 0, length); 
                    } 
                    r.close(); 
            } catch (UnsupportedEncodingException e) { 
                    e.printStackTrace(); 
            } catch (FileNotFoundException e) { 
                    e.printStackTrace(); 
            } catch (IOException e) { 
                    e.printStackTrace(); 
            } 
            return sb.toString(); 
    } 


		File file = new File(request.getSession().getServletContext().getRealPath("/statics/doc/test.xml")); 
	
		String s = file2String(file, "utf-8");
		s=s.replace("${name}", "张三");
		byte [] buffer = s.getBytes("utf-8");//
		
		response.reset();
		response.addHeader("Content-Disposition", "attachment;filename=test.xml" );
		response.addHeader("Content-Length", "" + file.length());
		OutputStream ous = new BufferedOutputStream(response.getOutputStream());
		response.setContentType("application/octet-stream");
		ous.write(buffer);
		ous.flush();
		ous.close();
	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值