TxtUtils

package com.yh.proxy.basic.utils;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream;

/**
 * @title: TxtUtils
 * @Author kunkun
 * @Date: 2022/2/25 9:25
 * @Version 1.0
 */
public class TxtUtils {

    /* 导出txt文件
     * @author
     * @param	response
     * @param	text 导出的字符串
     * @return
     */
    public static void exportTxt(HttpServletResponse response, String text){
        response.setCharacterEncoding("utf-8");
        //设置响应的内容类型
        response.setContentType("text/plain");
        //设置文件的名称和格式
        response.addHeader("Content-Disposition","attachment;filename="
                + genAttachmentFileName( "文件名称", "JSON_FOR_UCC_")//设置名称格式,没有这个中文名称无法显示
                + ".txt");
        BufferedOutputStream buff = null;
        ServletOutputStream outStr = null;
        try {
            outStr = response.getOutputStream();
            buff = new BufferedOutputStream(outStr);
            buff.write(text.getBytes("UTF-8"));
            buff.flush();
            buff.close();
        } catch (Exception e) {
            //LOGGER.error("导出文件文件出错:{}",e);
        } finally {try {
            buff.close();
            outStr.close();
        } catch (Exception e) {
            //LOGGER.error("关闭流对象出错 e:{}",e);
        }
        }
    }

    //原文说这个方法能解决文件中文名乱码问题,但是我实际试了以后中文的文件名依然乱码(文件内容中的中文能正常显示),不知道为什么
//最后是由前端生成的中文名
    public static String genAttachmentFileName(String cnName, String defaultName) {
        try {
            cnName = new String(cnName.getBytes("gb2312"), "ISO8859-1");
        } catch (Exception e) {
            cnName = defaultName;
        }
        return cnName;
    }
}

service

public void export1(String batch, Integer status , BigDecimal price, HttpServletResponse response) {
    // 查询需要导出的卡密列表
    PageHelper.clearPage();
    List<Cards> cardsList = cardsMapper.findAllDesc(batch,price,status);
    StringBuilder text = new StringBuilder();
    for (Cards cards : cardsList) {
        text.append(cards.getPrice());
        text.append("-");
        text.append(cards.getCardInfo());
        text.append("-");
        text.append(cards.getBatch());
        text.append("\r\n");
    }
    TxtUtils.exportTxt(response,text.toString());
}
上一篇 下一篇