ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

文件导出ZIP压缩

2022-09-05 09:02:05  阅读:172  来源: 互联网

标签:文件 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
来源: https://www.cnblogs.com/hhs-5120/p/16656851.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有