package com.jeeplus.modules.sg.raiseCapital.utils;

import java.io.*;

/**
 * 根据模板导出excel表格
 */
public class RaiseTemplate {

    /**
     * 复制文件
     * @param file
     *            源文件
     * @param fileNew
     *            复制到的新文件
     */
    public static void fileChannelCopy(File file, File fileNew) {
        try {
            InputStream in = null;
            OutputStream out = null;
            try {
                in = new BufferedInputStream(new FileInputStream(file), 1024);
                out = new BufferedOutputStream(new FileOutputStream(fileNew), 1024);
                byte[] buffer = new byte[1024];
                int len;
                while ((len = in.read(buffer)) != -1) {
                    out.write(buffer, 0, len);
                }
            } finally {
                if (null != in) {
                    in.close();
                }
                if (null != out) {
                    out.close();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public String getSispPath() {
        String sispPath = this.getClass().getResource("/").getPath()+ "freemarker/";
        return sispPath;
    }
    /**
     * 读取excel模板，并复制到新文件中供写入和下载
     * @return
     */
    public File createNewFile() {
        // 读取模板，并赋值到新文件
        // 文件模板路径
        String path = (getSispPath() + "excelmodel/raiseCapital.xlsx");
        File file = new File(path);
        // 保存文件的路径
        String realPath = (getSispPath() + "excelmodel");
        // 新的文件名
        String newFileName = "completion" + System.currentTimeMillis() + ".xlsx";
        // 判断路径是否存在
        File filePath = new File(realPath);
        if (!filePath.exists()) {
            filePath.mkdirs();
        }
        // 写入到新的excel
        File newFile = new File(realPath, newFileName);
        try {
            newFile.createNewFile();
            // 复制模板到新文件
            fileChannelCopy(file, newFile);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return newFile;
    }
    /**
     * 下载成功后删除
     *
     * @param files
     */
    private void deleteFile(File... files) {
        for (File file : files) {
            if (file.exists()) {
                file.delete();
            }
        }
    }

}
