• 170808、生成为CVS文件


    /**
         * Desc : 生成为CVS文件
         * User : RICK
         * @param data  源数据List
         * @param map  csv文件的列表头map
         * @param outPutPath  文件路径
         * @param fileName  文件名称
         * Time : 2017/10/20 13:50
          */
        @SuppressWarnings("rawtypes")
        public static File createCVSFile(List data, LinkedHashMap map, String outPutPath, String fileName){
            File csvFile = null;
            BufferedWriter bufferedWriter = null;
            try {
                File file = new File(outPutPath);
                if (!file.exists()){
                    file.mkdir();
                }
                //定义文件名格式并创建
                csvFile = File.createTempFile(fileName, ".cvs", new File(outPutPath));
                System.out.println("csvFile:" + csvFile);
                // UTF-8使正确读取分隔符","
                bufferedWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"), 1024);
                // 写入文件头部
                for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator.hasNext();) {
                    java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator.next();
                    bufferedWriter.write((String) propertyEntry.getValue() != null ? new String(
                            ((String) propertyEntry.getValue()).getBytes("UTF-8"), "UTF-8") : "");
                    if (propertyIterator.hasNext()) {
                        bufferedWriter.write(",");
                    }
                    System.out.println(new String(((String) propertyEntry.getValue()).getBytes("UTF-8"),
                            "UTF-8"));
                }
                bufferedWriter.write("
    ");
                // 写入文件内容
                for (Iterator iterator = data.iterator(); iterator.hasNext();) {
                    Object row = (Object) iterator.next();
                    for (Iterator propertyIterator = map.entrySet().iterator(); propertyIterator
                            .hasNext();) {
                        java.util.Map.Entry propertyEntry = (java.util.Map.Entry) propertyIterator
                                .next();
                        bufferedWriter.write((String) BeanUtils.getProperty(row,
                                ((String) propertyEntry.getKey()) != null? (String) propertyEntry.getKey()
                                        : ""));
                        if (propertyIterator.hasNext()) {
                            bufferedWriter.write(",");
                        }
                    }
                    if (iterator.hasNext()) {
                        bufferedWriter.write("
    ");
                    }
                }
                bufferedWriter.flush();
            } catch(Exception e){
                e.printStackTrace();
            } finally {
                try {
                    bufferedWriter.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return csvFile;
        }
    
        /**
         * Desc :  下载文件
         * User : RICK 
         * @param response
         * @param csvFilePath 文件路径
         * @param fileName 文件名称
         * Time : 2017/10/20 13:53
          */
        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, "UTF-8")
            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);
                    }
                }
            }
        }
    
        /**
         * Desc :  删除该目录filePath下的所有文件
         * User : RICK 
         * @param filePath 文件目录路径
         * Time : 2017/10/20 13:53
          */
        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();
                    }
                }
            }
        }
    
        /**
         * Desc :  删除单个文件
         * User : RICK 
         * @param filePath 文件目录路径
         * @param fileName 文件名称
         * Time : 2017/10/20 13:54
          */
        
        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;
                        }
                    }
                }
            }
        }public static void main(String[] args) {
            List exportData = new ArrayList<Map>();
            Map row1 = new LinkedHashMap<String, String>();
            row1.put("1", "rick");
            row1.put("2", "男");
            row1.put("3", "20");
            row1.put("4", "14000000000");
            exportData.add(row1);
            row1 = new LinkedHashMap<String, String>();
            row1.put("1", "anna");
            row1.put("2", "女");
            row1.put("3", "23");
            row1.put("4", "180123456789");
            exportData.add(row1);
            LinkedHashMap map = new LinkedHashMap();
            map.put("1", "姓名");
            map.put("2", "性别");
            map.put("3", "年龄");
            map.put("4", "手机号");
    
    
    
            String path = "D:/export/";
            String fileName = DateUtil.getYearMonthDay() + Constant.CharacterType.underline;
            File file = CvsUtil.createCVSFile(exportData, map, path, fileName);
            String fileName2 = file.getName();
            System.out.println("文件最终名称:" + fileName2);
    
        }
  • 相关阅读:
    如何隐藏DLL中,导出函数的名称?
    排序算法之0-1、0-1-2排序
    在Vista以上版本运行WTL程序,有时候会提示“这个程序可能安装补正确...”的错误
    编码格式(未完待续......)
    WinDbg分析DUMP文件
    自己捣鼓了一个12306抢票软件,欢迎大家使用,并讨论改进方法!
    Cocos2D-X扫盲之坐标系、锚点
    Spring核心组件剖析
    走进Java中的持有对象(容器类)【二】Collection
    走进JVM【二】理解JVM内存区域
  • 原文地址:https://www.cnblogs.com/zrbfree/p/7736849.html
Copyright © 2020-2023  润新知