zoukankan      html  css  js  c++  java
  • java导出txt文件

    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

  • 相关阅读:
    innodb的innodb_buffer_pool_size和MyISAM的key_buffer_size(转自:http://www.java123.net/898181.html)
    mysql max_allowed_packet参数值改大后,莫名被还原
    windows MySQL5.7.9免安装版配置方法
    centos7.2启动级别
    saltstack
    Jmeter -- 参数化(函数助手和CSV数据文件配置)
    Jmeter -- 上下文关联(JSON提取器)
    LBS 基于位置的服务
    uiautomatorviewer报错 Error taking device screenshot: EOF
    python中加入中文注释报错处理
  • 原文地址:https://www.cnblogs.com/godtrue/p/6879594.html
Copyright © 2011-2022 走看看