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

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/16616.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论