java输出txt文件

Java语言实现txt文件下载

不废话直接贴代码

@Controller
public class CpsChannelController {

    /**
     * 下载txt文件
     *
     * @return
     */
    @GetMapping("/downLoadTxt")
    @ResponseBody
    public void downLoadTxt(HttpServletResponse response, String fileName) {
        String txtName = fileName;//下载的文件名称
        List<Data> list = null;//文件data,输出内容
        StringBuffer txtDetail = new StringBuffer();
        for(Data data : list){
           txtDetail.append(data.getA());
           txtDetail.append("|");//拼接格式“|”,可以自定义
           txtDetail.append(data.getB());
           txtDetail.append("\r\n");//换行
        }
        exportToTxt(response,txtDetail,txtName);
    }

    public static void exportToTxt(HttpServletResponse response, String txtDetail, String 
          txtName) {
        //设置响应的字符集
        response.setCharacterEncoding("utf-8");
        //设置响应内容的类型
        response.setContentType("text/plain");
        //设置文件的名称和格式
        response.addHeader(
                "Content-Disposition",
                "attachment; filename="
                        + genAttachmentFileName(txtName, "默认名称")//设置名称格式,没有这个中文名称无法显示
                        + ".txt");//通过后缀可以下载不同的文件格式
        BufferedOutputStream buff = null;
        ServletOutputStream outStr = null;
        try {
            outStr = response.getOutputStream();
            buff = new BufferedOutputStream(outStr);
            buff.write(txtDetail.getBytes("UTF-8"));
            buff.flush();
            buff.close();
        } catch (Exception e) {
            log.error("导出文件文件出错,e:{}",e);
        } finally {try {
            buff.close();
            outStr.close();
        } catch (Exception e) {
            log.error("关闭流对象出错 e:{}",e);
        }
        }
    }

    /**
     * 防止中文名称出错
     *
     * @return
     */
    public static String genAttachmentFileName(String cnName, String defaultName) {
        try {
            cnName = new String(cnName.getBytes("gb2312"), "ISO8859-1");
        } catch (Exception e) {
            cnName = defaultName;
        }
        return cnName;
    }




}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值