• 导出:xml zip


    import java.util.zip.ZipOutputStream;
    import java.io.BufferedOutputStream;
    import java.io.DataOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.math.BigDecimal;
    import java.nio.charset.Charset;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    //https://blog.csdn.net/yangymy/article/details/91375621
    public class Test1 {
    
        public static void main(String[] args) {
            createXml("aaa.eep");
        }
    
        /**
         * java生成xml并直接写入zip包
         * @param rootpath
         * @param fileName
         */
        public static void createXml(String fileName) {
            ZipOutputStream zipos = null;
            DataOutputStream os = null;
            InputStream in = null;
    
            try {
                zipos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream("d:/123.zip")),
                        Charset.forName("UTF-8"));
                zipos.setMethod(ZipOutputStream.DEFLATED); // 设置压缩方法
                os = new DataOutputStream(zipos);
    
                Document doc = DocumentHelper.createDocument();
                doc.setXMLEncoding("UTF-8");
                // 根节点
                Element root = doc.addElement("根节点", "http://www.xxxxxx.cn");
                root.addNamespace("xsi", "http://www.xxxxxx.cn");
                root.addAttribute("name", "M0");
                // 子节点1
                createElement("子节点1", "M1", "子节点1", root);
                // 子节点2
                createElement("子节点2", "M2", "子节点2", root);
                // 子节点3
                Element child3 = createElement("子节点3", "M3", "", root);
                child3.addAttribute("年度", "2009");
                // 子节点3的子节点
                createElement("节点3的子节点1", "M31", 100, child3);
                createElement("节点3的子节点2", "M32", 55.5, child3);
                createElement("节点3的子节点3", "M33", new Date(), child3);
    
                zipos.putNextEntry(new ZipEntry(fileName));
                OutputFormat outputFormat = OutputFormat.createPrettyPrint();
                outputFormat.setEncoding("UTF-8");
                XMLWriter writer = new XMLWriter(os, outputFormat);
                writer.setEscapeText(false);
                writer.write(doc);
    
                // 附件
                zipos.putNextEntry(new ZipEntry("123.txt"));
                OutputFormat outputFormat1 = OutputFormat.createPrettyPrint();
                outputFormat.setEncoding("UTF-8");
                XMLWriter writer1 = new XMLWriter(os, outputFormat1);
                writer1.setEscapeText(false);
                writer1.write("asdasdasdas");
    
    //            in = new FileInputStream("d:/123.txt");
    //            if (in != null) {
    //                byte[] b = new byte[1024 * 10];
    //                int length = 0;
    //                while ((length = in.read(b)) != -1) {
    //                    os.write(b, 0, length);
    //                }
    //            }
    
                zipos.closeEntry();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (zipos != null) {
                    try {
                        zipos.close();
                    } catch (Exception e2) {
                        e2.printStackTrace();
                    }
                }
                if (os != null) {
                    try {
                        os.close();
                    } catch (Exception e2) {
                        e2.printStackTrace();
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    } catch (Exception e2) {
                        e2.printStackTrace();
                    }
                }
            }
        }
    
        public static Element createElement(String tag, String name, Object text, Element parent) {
            Element element = parent.addElement(tag);
            if (element != null) {
                element.addAttribute("name", name);
                if (text == null)
                    text = "";
                String str = "";
                if (text instanceof Date) {
                    Date d = (Date) text;
                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                    str = format.format(d);
                } else if (text instanceof BigDecimal) {
                    str = text.toString();
                } else {
                    str = String.valueOf(text);
                }
                if (!str.trim().equals("")) {
                    element.addText(str);
                }
            }
            return element;
        }
    
    }
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.*;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Iterator;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    @RestController
    @RequestMapping("xxxx")
    public class DownLoadController {
        private static final Logger logger = LoggerFactory.getLogger(UrlFilesToZip.class);
        //http://localhost:8099//xxxx/multipleDownLoad?urls=www.baidu.com&destFileName=123
        /**
         * 下载多个文件这 @return
         */
        @RequestMapping("/multipleDownLoad")
        public static void getFile(String urls, String destFileName, HttpServletResponse response) throws Exception, IOException {
            List<String> urlList = new ArrayList<>();
            for (String id : StringUtils.splitToList(urls, ",")) urlList.add(id);
            try {
                String filename = new String((destFileName + ".zip").getBytes("UTF-8"), "ISO8859-1");/*控制文件名编码*/
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                ZipOutputStream zos = new ZipOutputStream(bos);
                UrlFilesToZip s = new UrlFilesToZip();
                int idx = 1;
                String postfix = "";
                for (String oneFile : urlList) {
                    if (!(oneFile == null || oneFile.indexOf(".") == -1)) {/*如果图片地址为null或者地址中没有"."就返回""*/
                        postfix = oneFile.substring(oneFile.lastIndexOf(".") + 1).trim().toLowerCase();
                    }
                    if (!org.springframework.util.StringUtils.isEmpty(postfix)) postfix = "." + postfix;
                    zos.putNextEntry(new ZipEntry(destFileName + idx + postfix));
                    byte[] bytes = s.getImageFromURL(oneFile);
                    zos.write(bytes, 0, bytes.length);
                    zos.closeEntry();
                    idx++;
                }
                zos.close();
                response.setContentType("application/octet-stream; charset=utf-8");/* response.setContentType("application/force-download");// 设置强制下载不打开*/
                response.addHeader("Content-Disposition", "attachment;fileName=" + filename);/* 设置文件名*/
                OutputStream os = response.getOutputStream();
                os.write(bos.toByteArray());
                os.close();
            } catch (FileNotFoundException ex) {
                logger.error("FileNotFoundException", ex);
            } catch (Exception ex) {
                logger.error("Exception", ex);
            }
        }
    }
    
    class StringUtils {
        public static List<String> splitToList(String str, String regex) {
            if (org.springframework.util.StringUtils.isEmpty(str)) return null;
            else {
                ArrayList resultList = new ArrayList();
                List resultObject =  Arrays.asList((str.split(regex)));
                Iterator i$ = resultObject.iterator();
                while (i$.hasNext()) {
                    Object obj = i$.next();
                    resultList.add(obj.toString());
                }
                return resultList;
            }
        }
    }
    
    /**
     * Created by Admin on 2017/10/19.
     */
     class UrlFilesToZip {
        private static final Logger logger = LoggerFactory.getLogger(UrlFilesToZip.class);/*根据文件链接把文件下载下来并且转成字节码*/
    
        public byte[] getImageFromURL(String urlPath) {
            byte[] data = null;
            InputStream is = null;
            HttpURLConnection conn = null;
            try {
                URL url = new URL(urlPath);
                conn = (HttpURLConnection) url.openConnection();
                conn.setDoInput(true);/* conn.setDoOutput(true);*/
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(6000);
                is = conn.getInputStream();
                if (conn.getResponseCode() == 200) data = readInputStream(is);
                else data = null;
            } catch (MalformedURLException e) {
                logger.error("MalformedURLException", e);
            } catch (IOException e) {
                logger.error("IOException", e);
            } finally {
                try {
                    if (is != null) is.close();
                } catch (IOException e) {
                    logger.error("IOException", e);
                }
                conn.disconnect();
            }
            return data;
        }
    
        public byte[] readInputStream(InputStream is) {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int length = -1;
            try {
                while ((length = is.read(buffer)) != -1) baos.write(buffer, 0, length);
                baos.flush();
            } catch (IOException e) {
                logger.error("IOException", e);
            }
            byte[] data = baos.toByteArray();
            try {
                is.close();
                baos.close();
            } catch (IOException e) {
                logger.error("IOException", e);
            }
            return data;
        }
    
    }
  • 相关阅读:
    谁记录了mysql error log中的超长信息(记pt-stalk一个bug的定位过程)
    谈谈MySQL无法连接的原因和分析方法
    MySQL 5.7基于GTID复制的常见问题和修复步骤(二)
    日常运维故障记录和解决
    python学习之-- 故障记录汇总
    sshpass-Linux命令之非交互SSH密码验证
    python 之 线程池实现并发
    python 之 实现su 到root账号
    shell
    shell
  • 原文地址:https://www.cnblogs.com/xyyou/p/12409535.html
Copyright © 2020-2023  润新知