Java生成Txt文件及下载

来源:互联网 发布:芝加哥艺术学院 知乎 编辑:程序博客网 时间:2024/04/26 23:25
package com.saicfc.pmpf.internal.manage.utils;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import com.saicfc.pmpf.common.enums.ChannelCodeEnums;/** * 生成TXT文件 * @author lizhiyong * @version $Id: TxtUtils.java, v 0.12014年9月11日 上午8:40:02 Exp $ */public class TxtUtils {    @SuppressWarnings("rawtypes")    public static File writeTxtFile(String channelCode, List contentList, LinkedHashMap map,                                    String filePath, String readStr, String fileName)                                                                                     throws IOException {        File file = new File(filePath);        if (!file.exists()) {            file.mkdir();            System.out.println("文件夹已创建");        }        //定义文件名格式并创建        File txtFile = File.createTempFile(fileName, ".txt", new File(filePath));        //先读取原有文件内容,然后进行写入操作        FileWriter writer = null;        if (CommonUtils.isNotEmpty(map)) {            //写入头信息            String filein = "";            for (Iterator tileIterator = map.entrySet().iterator(); tileIterator.hasNext();) {                java.util.Map.Entry propertyEntry = (java.util.Map.Entry) tileIterator.next();                filein += (String) propertyEntry.getValue() == null ? "" : (String) propertyEntry                    .getValue();                if (tileIterator.hasNext()) {                    filein = filein + "                 ";                }            }            try {                writer = new FileWriter(txtFile, true);                writer.write(filein);            } catch (IOException e1) {                e1.printStackTrace();            } finally {                if (writer != null) {                    try {                        writer.close();                    } catch (IOException e2) {                        e2.printStackTrace();                    }                }            }        }        //写入详细信息        int num = 1;        for (Iterator iterator = contentList.iterator(); iterator.hasNext();) {            LinkedHashMap txtMap = (LinkedHashMap) iterator.next();            String filein1 = "";            for (Iterator propertyIterator = txtMap.entrySet().iterator(); propertyIterator                .hasNext();) {                java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();                filein1 += (String) propertyEntry.getValue() == null ? "" : (String) propertyEntry                    .getValue();                if (propertyIterator.hasNext()) {                    filein1 = filein1 + readStr;                }            }            try {                System.out.println("数据filein1:" + filein1);                //给建行生成序号                if (ChannelCodeEnums.CCB.getChannelCode().equals(channelCode)) {                    filein1 = String.valueOf(num) + filein1;                }                writer = new FileWriter(txtFile, true);                writer.write(filein1);                //中国银行每行以换行结束                if (ChannelCodeEnums.BOC.getChannelCode().equals(channelCode)) {                    writer.write("\r\n");                } else if (ChannelCodeEnums.CIB.getChannelCode().equals(channelCode)) {                    writer.write("\r\n");                } else {                    if (num < contentList.size()) {                        writer.write("\r\n");                    }                    num++;                }            } catch (IOException e1) {                e1.printStackTrace();            } finally {                if (writer != null) {                    try {                        writer.close();                    } catch (IOException e2) {                        e2.printStackTrace();                    }                }            }        }        return txtFile;    }}


BigDecimal amountDecimal = new BigDecimal(0);            for (Iterator iterator = exportData.iterator(); iterator.hasNext();) {                LinkedHashMap cebMap = (LinkedHashMap) iterator.next();                String amount = (String) cebMap.get("amount");                BigDecimal amountDecimal2 = BigDecimal.valueOf(Double.parseDouble(amount))                    .setScale(2, BigDecimal.ROUND_HALF_UP);                amountDecimal = amountDecimal.add(amountDecimal2);            }            int cebdataSize = exportData.size();            LinkedHashMap amountHashMap = new LinkedHashMap();            amountHashMap.put("amount", amountDecimal.toPlainString());            exportData.add(0, amountHashMap);            LinkedHashMap sizeHashMap = new LinkedHashMap();            sizeHashMap.put("totalCount", String.valueOf(cebdataSize));            exportData.add(1, sizeHashMap);            String readStr = ",";            String fileName = "光大银行(CEB)退款数据";            //创建文件            File file = TxtUtils.writeTxtFile(channelCode, exportData, map, filePath, readStr,                fileName);            //下载文件            downLoadFile(response, filePath, file);

    /**     * 下载文件     * @param response     * @param filePath  文件路径     * @param file   文件     * @throws IOException     */    public void downLoadFile(HttpServletResponse response, String filePath, File file)                                                                                      throws IOException {        String fileName = file.getName();        //下载文件        FileManageUtils.exportFile(response, filePath + fileName, fileName);        //删除单个文件        FileManageUtils.deleteFile(filePath, fileName);    }

package com.saicfc.pmpf.internal.manage.utils;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.http.HttpServletResponse;/** * 文件管理 * @author lizhiyong * @version $Id: FileManageUtils.java, v 0.12014年9月11日 上午9:37:47 Exp $ */public class FileManageUtils {    /**     * 下载文件     * @param response     * @param csvFilePath     *              文件路径     * @param fileName     *              文件名称     * @throws IOException     */    public static void exportFile(HttpServletResponse response, String csvFilePath, String fileName)                                                                                                    throws IOException {        response.setContentType("application/csv;charset=GBK");        response.setHeader("Content-Disposition",            "attachment;  filename=" + new String(fileName.getBytes("GBK"), "ISO8859-1"));        //URLEncoder.encode(fileName, "GBK")        InputStream in = null;        try {            in = new FileInputStream(csvFilePath);            int len = 0;            byte[] buffer = new byte[1024];            response.setCharacterEncoding("GBK");            OutputStream out = response.getOutputStream();            while ((len = in.read(buffer)) > 0) {                //out.write(new byte[] { (byte) 0xEF, (byte) 0xBB, (byte) 0xBF });                out.write(buffer, 0, len);            }        } catch (FileNotFoundException e) {            System.out.println(e);        } finally {            if (in != null) {                try {                    in.close();                } catch (Exception e) {                    throw new RuntimeException(e);                }            }        }    }    /**     * 删除该目录filePath下的所有文件     * @param filePath     *            文件目录路径     */    public static void deleteFiles(String filePath) {        File file = new File(filePath);        if (file.exists()) {            File[] files = file.listFiles();            for (int i = 0; i < files.length; i++) {                if (files[i].isFile()) {                    files[i].delete();                }            }        }    }    /**     * 删除单个文件     * @param filePath     *         文件目录路径     * @param fileName     *         文件名称     */    public static void deleteFile(String filePath, String fileName) {        File file = new File(filePath);        if (file.exists()) {            File[] files = file.listFiles();            for (int i = 0; i < files.length; i++) {                if (files[i].isFile()) {                    if (files[i].getName().equals(fileName)) {                        files[i].delete();                        return;                    }                }            }        }    }}



0 0