BufferedOutputStream 流的用法

本文介绍了一个Java方法,用于从Web应用中导出特定住院患者的医疗数据到文本文件。该方法接收住院ID等参数,从数据库获取相关信息,并将数据格式化后输出到客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public void exportNhData(HttpServletRequest request, HttpServletResponse response) {

    String hospid = request.getParameter("hospid");
    String nhcode = request.getParameter("nhcode");
    String forgid = GetCookie.getForgId(request);
    String fileName = "";
    StringBuffer write = new StringBuffer();
    String enter = "\r\n";
    String splitNh = ";";
    String charsetName = "GB2312";
   
    BufferedOutputStream buff = null;
    ServletOutputStream outSTr = null;
    Map map = null;
   
    try {
      outSTr = response.getOutputStream(); // 建立
      buff = new BufferedOutputStream(outSTr);
     
      if(Nulls.isEmpty(hospid)){
        throw new RuntimeException("住院ID不能为空!");
      }
     
      PatinfoCy patiinfo1 = getPatiinfo().getPatinfoCyByHospid(Convert.toLong(hospid));
      String indate = Convert.dataFormat(patiinfo1.getIndate(), "yyyy-MM-dd");
      String outdate = Convert.dataFormat(patiinfo1.getOutdate(), "yyyy-MM-dd");
      write.append("0" + splitNh);
      write.append(indate + splitNh);
      write.append(outdate + splitNh);
      write.append(patiinfo1.getHospcode() + splitNh);
      write.append(enter);
     
      List list = getPatiinfo().queryNhData(hospid, forgid);
     
      for (int i = 0; i < list.size(); i++) {
        map = (Map)list.get(i);
       
        write.append(map.get("MEDINAME") + splitNh);
        write.append(map.get("MEDICODE") + splitNh);
        write.append(map.get("USER_NUM") + splitNh);
        write.append(map.get("UNITPRICE") + splitNh);
        write.append(outdate + splitNh);
        write.append(enter);
      }
      buff.write(write.toString().getBytes(charsetName));
     
      try {
        fileName = URLEncoder.encode(nhcode.trim().toUpperCase() + "_" + patiinfo1.getName(), "UTF-8");
      } catch (UnsupportedEncodingException e1) {
        e1.printStackTrace();
      }
     
      response.setCharacterEncoding("UTF-8");
      response.setContentType("text");
      //response.setContentType("application/x-msdownload;charset=UTF-8");
      //response.setHeader("Content-Disposition", "attachment;filename=data.xml");
      response.setHeader("Content-Disposition", "attachment;filename=" + fileName + "z.txt");
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      try {
        buff.flush();
        buff.close();
        outSTr.close();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值