• java将多个文件的字节数组压缩成一个字节数组,并生成zip文件


    public static void main(String[] args) throws IOException {
    
            Map<String,byte[]> map=new HashMap<>();
            map.put("application.properties",getBytes(new File("F:\shop-mail2\shop-apigateway\src\main\resources\application.properties")));
            map.put("application.yml",getBytes(new File("F:\shop-mail2\shop-apigateway\src\main\resources\application.yml")));
            System.out.println(listBytesToZip(map).length);
    
            String filepath="F:\test\";
            String filename="test.zip";
            fileToBytes(listBytesToZip(map),filepath,filename);
        }
    
        protected static byte[] listBytesToZip(Map<String,byte[]> mapReporte) throws IOException {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
    
            ZipOutputStream zos = new ZipOutputStream(baos);
    
            for (Map.Entry<String,byte[]> reporte : mapReporte.entrySet()) {
                ZipEntry entry = new ZipEntry(reporte.getKey());
    
                entry.setSize(reporte.getValue().length);
    
                zos.putNextEntry(entry);
    
                zos.write(reporte.getValue());
    
            }
            zos.closeEntry();
            zos.close();
            return baos.toByteArray();
        }
    
        private static byte[] getBytes(File file) throws IOException {
            FileInputStream fis=new FileInputStream(file);
            ByteArrayOutputStream bao=new ByteArrayOutputStream();
            byte[] b=new byte[1024];
            int len=-1;
            while ((len=fis.read(b))!=-1){
                bao.write(b,0,len);
            }
            return bao.toByteArray();
        }
    
        public static void fileToBytes(byte[] bytes, String filePath, String fileName) {
            BufferedOutputStream bos = null;
            FileOutputStream fos = null;
            File file = null;
            try {
    
                file = new File(filePath + fileName);
                if (!file.getParentFile().exists()){
                    //文件夹不存在 生成
                    file.getParentFile().mkdirs();
                }
                fos = new FileOutputStream(file);
                bos = new BufferedOutputStream(fos);
                bos.write(bytes);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (bos != null) {
                    try {
                        bos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if (fos != null) {
                    try {
                        fos.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
  • 相关阅读:
    form表单提交target属性使用
    window.showModalDialog
    mybaits中date类型显示时分秒(orcle数据库)
    mybatis中in查询
    偷懒的inline-block解决方法
    10. python单元测试(一)
    9. Request & 爬虫
    8. 类与对象
    7. python异常处理&异常基类学习
    6. IO及文件操作
  • 原文地址:https://www.cnblogs.com/mibing/p/15150163.html
Copyright © 2020-2023  润新知