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());
}