导出txt文档
学习地址:https://www.cnblogs.com/godtrue/p/6879594.html
@GetMapping("/{id}/export")
@ApiOperation("下载txt文档")
public void exportText(HttpServletResponse response, @PathVariable(value = "id") @ApiParam(value = "主键id", example = "1", required = true) Integer id) {
String jsonString = "2223";
ExportTextUtil.writeToTxt(response, jsonString, "zsw");
}
工具类
/**
* 导出文件文件的工具类
*/
@Slf4j
public class ExportTextUtil {
/**
* 导出文本文件
*
* @param response
* @param jsonString
* @param fileName
*/
public static void writeToTxt(HttpServletResponse response, String jsonString, String fileName) {//设置响应的字符集
response.setCharacterEncoding("utf-8");
response.setContentType("text/plain");
response.addHeader(
"Content-Disposition",
"attachment; filename="
+ FileUtil.genAttachmentFileName(fileName + "_", "ZSW")
+ MessageFormat.format("{0,date,yyyy-MM-dd}", new Object[]{Calendar.getInstance().getTime()})
+ ".txt");//通过后缀可以下载不同的文件格式
BufferedOutputStream buff = null;
ServletOutputStream outStr = null;
try {
outStr = response.getOutputStream();
buff = new BufferedOutputStream(outStr);
buff.write(delNull(jsonString).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);
}
}
}
/**
* 如果字符串对象为 null,则返回空字符串,否则返回去掉字符串前后空格的字符串
*
* @param str
* @return
*/
public static String delNull(String str) {
String returnStr = "";
if (StringUtils.isNotBlank(str)) {
returnStr = str.trim();
}
return returnStr;
}
}
@Slf4j
public class FileUtil {
public static void writeCsv(HttpServletResponse httpServletResponse, String fileName, List<String> header, List<List<String>> columns) {
httpServletResponse.setContentType("application/octet-stream;charset=utf-8");
httpServletResponse.setHeader("Content-Disposition", "attachment; filename=\"" + URLUtil.encode(fileName, "UTF-8") + "\"");
List<List<String>> rowList = new ArrayList<>();
rowList.add(header);
rowList.addAll(columns);
final CsvWriter writer;
try {
writer = CsvUtil.getWriter(httpServletResponse.getWriter());
} catch (IOException e) {
log.error("IO error", e);
throw new CustomizeException(BaseResultCode.FAIL_IO);
}
writer.write(rowList);
}
/**
* 生成导出附件中文名。应对导出文件中文乱码
* <p>
* response.addHeader("Content-Disposition", "attachment; filename=" + cnName);
*
* @param cnName
* @param defaultName
* @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;
}
}