首页 > 其他分享 >文件导出ZIP压缩

文件导出ZIP压缩

时间:2022-09-05 09:01:15浏览次数:84  
标签:文件 file String ZIP 压缩 导出 zos File new

文件导出ZIP压缩

	@Override
public String downloadallfiles(HttpServletRequest request, String lsbpId, String bsTitle) {
	JwtUserObject jwtUserObject = JwtUtil.getJwtUserObj(request.getHeader("Authorization"));
	String userid = jwtUserObject.getUSERID();
	String username = jwtUserObject.getUSERNAME();
	String itemcode = jwtUserObject.getITEMCODE();
	String orgcode = jwtUserObject.getORGCODE();
	String useridentity = jwtUserObject.getUSERIDENTITY();
	//判断是否已经压缩过该文件
	List<FileObject> list = benbuMapper.findCzFileZipById(lsbpId);
	if (list!=null && list.size() > 0) {
		String path = sso.getPresignedObjectUrlByBucketNameAndPath(list.get(0).getBucketname(), list.get(0).getFilepath());
		return path;
	}

	File file1 = new File(tempfile);
	if (!file1.exists()) {
		file1.mkdirs();
	} else {
		deleteFile(file1);
		if (flag == 1) {
			System.out.println("文件删除成功!");
		}
		file1.mkdirs();
	}
	//根据本部主键查询厂站报送的文件
	List<HashMap<String, String>> files = benbuMapper.findCzFileById(lsbpId);
	if (files != null && files.size() > 0) {
		for (HashMap map : files) {
			//临时目录下新增文件
			File file2 = new File(tempfile + "/" + map.get("itemCode"));
			if (!file2.exists()) {
				file2.mkdirs();
			}
			sso.downLoadFileByid((String) map.get("fileId"), tempfile + "/" + map.get("itemCode"));
		}
	}
	//文件压缩
	FileZipUtil.compressToZip(tempfile, zipDowload, bsTitle + ".zip");

	FileItem fileItem = null;
	MultipartFile file = getMultipartFile(bsTitle);
	FileObject fileObject2 = sso.uploadFileCommondLs(file, userid, username, itemcode, orgcode, "10005", useridentity, lsbpId,
			itemcode.toLowerCase(), FileTypeConstant.COMP_10 + "/10005/", "");
	String path = sso.getPresignedObjectUrlByBucketNameAndPathLs(fileObject2.getBucketname(), fileObject2.getFilepath());

	//删除本地文件
	deleteFile(new File(zipDowload));

	return path;

}

文件压缩工具类

public class FileZipUtil {
    /**
     * 压缩文件
     *
     * @param sourceFilePath 源文件路径
     * @param zipFilePath    压缩后文件存储路径
     * @param zipFilename    压缩文件名
     */
    public static  String compressToZip(String sourceFilePath, String zipFilePath, String zipFilename) {
        File sourceFile = new File(sourceFilePath);
        File zipPath = new File(zipFilePath);
        if (!zipPath.exists()) {
            zipPath.mkdirs();
        }
        File zipFile = new File(zipPath + File.separator + zipFilename);
        try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile))) {
            writeZip(sourceFile, "", zos);
            return "压缩完成";
            //文件压缩完成后,删除被压缩文件
//            boolean flag = deleteDir(sourceFile);
//            System.out.println(flag);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e.getMessage(), e.getCause());
        }
    }

    /**
     * 遍历所有文件,压缩
     *
     * @param file       源文件目录
     * @param parentPath 压缩文件目录
     * @param zos        文件流
     */
    public static void writeZip(File file, String parentPath, ZipOutputStream zos) throws IOException {
        if (file.isDirectory()) {
            //目录
            parentPath += file.getName() + File.separator;
            File[] files = file.listFiles();
            for (File f : files) {
                writeZip(f, parentPath, zos);
            }
        } else {
            //文件
            try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) {
                //指定zip文件夹
                ZipEntry zipEntry = new ZipEntry(parentPath + file.getName());
                zos.putNextEntry(zipEntry);
                int len;
                byte[] buffer = new byte[1024 * 10];
                while ((len = bis.read(buffer, 0, buffer.length)) != -1) {
                    zos.write(buffer, 0, len);
                    zos.flush();
                }
            } catch (Exception e) {
                e.printStackTrace();
                throw new RuntimeException(e.getMessage(), e.getCause());
            }
        }
    }

    /**
     * 删除文件夹
     *
     * @param dir
     * @return
     */
    public static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        //删除空文件夹
        return dir.delete();
    }
}

标签:文件,file,String,ZIP,压缩,导出,zos,File,new
From: https://www.cnblogs.com/hhs-5120/p/16656851.html

相关文章

  • 导出模板设置其中某一列下拉选
    导出模板设置其中某一列下拉选 *设置下拉选 */ for(inti=0;i<headers.length;i++){ Stringheader=headers[i]; if(header.equals("电站简称")){ Str......
  • vue纯前端导入导出excel
    vue纯前端导入导出excel我们有时会遇到在前端实现导入/导出excel的需求这里直接推荐两个现成的vue导入导出excel的库,他们是基于xlsx封装的https://www.npmjs.com/packa......
  • Java实现文件下载Zip压缩
    Java实现文件下载Zip压缩目录一、概述二、代码功能实现一、概述开发过程中碰到一个需求,需要将服务器上的多个文件打包为zip,并进行下载响应到客户端,写了一个Demo总......
  • Oracle数据库导入、导出dmp文件
    1、数据库导出dmp文件exphdrg/[email protected]:1521/orclfile=D:\hdrg.dmp说明:exp用户名/密码@数据库名file=E:\file.dmptables=(要导出的表名称,以逗号隔开)2、o......
  • Linux中 .gzip .tar .zip的区别
    目录.gzip.tar.zip引用gzip:一般是用于单文件的压缩。zip/tar:一般是用于整个目录/多文件的压缩.gzip不能保存原文件,不能压缩文件夹输入gzip1.txt后,原文件1.txt变为1.......
  • navicat连接远程数据库,mysql workbench导出数据表
    navicat连接远程数据库: mysqlworkbench导出数据表: ......
  • Java实现Excel导入导出操作详解
    前言本次封装是基于POI的二次开发,最终使用只需要调用一个工具类中的方法,就能满足业务中绝大部门的导入和导出需求。1.功能测试1.1测试准备在做测试前,我们需要將【2......
  • markdown preview enhanced插件导出为.html文件
      不知不觉,vscode和Markdown文档的配合使用已经用了很久了,但对于没有使用过Markdown的小伙伴,想要给他快速的分享你的Markdown笔记,却是一个问题。解决方案  使用vscod......
  • 【Word】如何批量导出ppt中的备注
    【Word】如何批量导出ppt中的备注文件|导出|创建讲义|备注在幻灯片旁在word中删除左边两列,复制剩下的表格|粘贴-只保留文本......
  • 如何判断7z压缩文件格式
    如果压缩文件的后缀不是7z,那么如何如何判断文件格式呢?那就是通过文件头判断。7z文件头前6位,固定是:377ABCAF271C,其中前两位37、7A分别是“7”“z”的ASC码值,BCAF271C是固......