码迷,mamicode.com
首页 > 编程语言 > 详细

java导出txt文件

时间:2017-05-20 13:52:14      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:pen   pac   param   turn   文件的   tac   log   end   声明   

1:vm模板页面的代码片段

                    <div class="col-sm-1">
                        <button type="button" class="btn btn-warning btn-sm" id="exportText"><i class="glyphicon glyphicon-file"/>导出文本文件</button>
                    </div>

2:JavaScript脚本文件的代码片段

    /**
     * 导出文本文件
     */
    $("#exportText").on(‘click‘,function(){
        window.open(contextPath+‘/exportText.json‘, ‘_blank‘);
    });

3:Java控制器的代码片段

    /**
     * 导出文件文件
     * 用于UCC配置,将有效的数转换成JSON字符串,然后导出文本文件
     *
     * @return
     * @throws Exception
     */
    @RequestMapping("/exportText.json")
    public void exportText(HttpServletResponse response){
        //获取有效的数据
        List list = "i am godtrue 我最帅";//伪代码
//将集合转换成字符串 String jsonString = JSON.toJSONString(list); ExportTextUtil.writeToTxt(response,jsonString,"开关控制-JSON_FOR_UCC"); }

4:导出文本文件的工具类——此例的核心代码,当然,这仅仅是一种方式,还有其他的各种的选择

import java.io.BufferedOutputStream;
import java.text.MessageFormat;
import java.util.Calendar;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import com.jd.fce.ape.web.common.util.FileUtil;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 导出文件文件的工具类
 */
public class ExportTextUtil {
        /**
         * 声明日志记录器
         */
        private static final Logger LOGGER = LoggerFactory.getLogger(ExportTextUtil.class);

        /**
         * 导出文本文件
         * @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+ "_", "JSON_FOR_UCC_")
                            + MessageFormat.format("{0,date,yyyy-MM-dd HH:mm:ss}", 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) {
                LOGGER.error("导出文件文件出错,e:{}",e);
            } finally {try {
                    buff.close();
                    outStr.close();
                } catch (Exception e) {
                    LOGGER.error("关闭流对象出错 e:{}",e);
                }
            }
        }

        /**
         * 如果字符串对象为 null,则返回空字符串,否则返回去掉字符串前后空格的字符串
         * @param str
         * @return
         */
        public static String delNull(String str) {
                String returnStr="";
                if (StringUtils.isNotBlank(str)) {
                    returnStr=str.trim();
                }
                return returnStr;
        }
}

5:解决导出文件名乱码的工具类

public abstract class FileUtil {
    
    /**
     * 生成导出附件中文名。应对导出文件中文乱码
     * <p>
     * response.addHeader("Content-Disposition", "attachment; filename=" + cnName);
     * 
     * @param cnName
     * @param defaultName
     * @return
     */
    public static String genAttachmentFileName(String cnName, String defaultName) {
        try {
//            fileName = URLEncoder.encode(fileName, "UTF-8");
            cnName = new String(cnName.getBytes("gb2312"), "ISO8859-1");
            /*
            if (fileName.length() > 150) {
                fileName = new String( fileName.getBytes("gb2312"), "ISO8859-1" );
            }
            */
        } catch (Exception e) {
            cnName = defaultName;
        }
        return cnName;
    }
}

 6:参看如下

http://qingfeng825.iteye.com/blog/461504

java导出txt文件

标签:pen   pac   param   turn   文件的   tac   log   end   声明   

原文地址:http://www.cnblogs.com/godtrue/p/6879594.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!