精华内容
下载资源
问答
  • Java多文件压缩下载解决方案

    万次阅读 2018-09-07 18:00:33
    会员运营平台经过改版后页面增加了许多全部下载链接,上周上线比较仓促,全部下载是一个直接下载ZIP压缩文件的链接,每个ZIP压缩文件都是由公司运营人员将页面需要下载的文件全部压缩成一个ZIP压缩文件,然后通过...

    Java多文件压缩下载解决方案

    需求:

    会员运营平台经过改版后页面增加了许多全部下载链接,上周上线比较仓促,全部下载是一个直接下载ZIP压缩文件的链接,每个ZIP压缩文件都是由公司运营人员将页面需要下载的文件全部压缩成一个ZIP压缩文件,然后通过公司的交易运营平台上传至文件资料系统,会员运营平台则可以直接获取ZIP压缩文件地址进行下载

    下面是一个页面示例:

    需求分析:

    通过上面需求和页面可以分析出,公司运营人员将页面全部需要下载的文件进行ZIP压缩后上传文件资料系统确实是一个紧急的解决方案,但是考虑到后面需求变更,页面需要下载的文件也会跟着变更,每次变更需求,公司运营人员都需要重新进行压缩文件,程序也需要进行相应的修改,这样对于程序的维护性不友好,站在使用系统的客户角度,每次都需要重新上传,因此临时解决方案不再符合软件的良好扩展性和操作方便,因此才有了对页面需要全部下载的文件使用程序压缩处理并下载。

     

    解决思路:

    第一步:前端传递Ids字符串

    由于会员运营系统显示需要下载的文件是资料系统中的每条文件记录的Id,因此前端页面只需要将需要下载的所有文件Ids字符串(比如:'12,13,14')传递到后台即可.

    第二步:后台处理

    首先获取到前端传递的ids字符串,将其转换为Integer[]的ids数组,然后调用文件资料微服务根据id列表查询对应的文件记录(包含文件类型和文件地址路径等信息),获取到所有需要下载的文件路径后压缩成ZIP格式的文件进行下载。

     

    具体实现压缩下载方案:

    第一种:先压缩成ZIP格式文件,再下载

    第二种:边压缩ZIP格式文件边下载(直接输出ZIP流)

     

    前端具体实现代码:

    由于全部下载是一个a链接标签,于是使用Ajax异步下载,后来功能实现后点击下载一点反应都没有,一度怀疑是后台出错,但是后台始终没有报错,在网上看了一下Ajax异步不能下载文件(也就是Ajax不支持流类型数据),具体原因可以百度https://blog.csdn.net/qq_16877261/article/details/54376430这篇博客,解释的还算是比较好的。后面会写一篇=文章详细分析Ajax异步下载解决方案。

    接下来考虑使用form表单标签实现,最终配合使用input标签实现了前端传递ids列表的问题,点击a链接标签触发提交form标签即可。

    在每一个需要下载的文件增加一个隐藏的input标签,value值是这个文件的id值

    具体点击a链接标签提交表单的JS代码:

     

    后端具体实现代码:

    第一种方案实现:

    第二种方案实现:

    附上完整代码:

    压缩下载Controller

    package com.huajin.jgoms.controller.user;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.List;
    import java.util.Objects;
    import java.util.stream.Collectors;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.collections.CollectionUtils;
    import org.apache.commons.lang3.ObjectUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.huajin.baymax.logger.XMsgError;
    import com.huajin.baymax.logger.Xlogger;
    import com.huajin.common.util.UUIDUtil;
    import com.huajin.exchange.domain.sys.FeFileCenter;
    import com.huajin.exchange.enums.sys.SysParamKey;
    import com.huajin.exchange.po.sys.SysParamPo;
    import com.huajin.jgoms.controller.HjBaseController;
    import com.huajin.jgoms.service.FeFileCenterService;
    import com.huajin.jgoms.service.SysParamService;
    import com.huajin.jgoms.util.CompressDownloadUtil;
    
    /**
     * 压缩下载文件
     *
     * @author hongwei.lian
     * @date 2018年9月6日 下午6:29:05
     */
    @Controller
    @RequestMapping("/compressdownload")
    public class CompressDownloadController extends HjBaseController {
    	
    	@Autowired
    	private FeFileCenterService feFileCenterService;
    	
    	@Autowired
    	private SysParamService sysParamService;
    
    	/**
    	 * 多文件压缩下载
    	 * 
    	 * @author hongwei.lian
    	 * @date 2018年9月6日 下午6:28:56
    	 */
    	@RequestMapping("/downloadallfiles")
    	public void downloadallfiles() {
    		//-- 1、根据ids查询下载的文件地址列表
    		String ids = request().getParameter("ids");
    		if (StringUtils.isEmpty(ids)) {
    			return ;
    		}
    		//-- 将字符串数组改变为整型数组
    		Integer[] idsInteger = CompressDownloadUtil.toIntegerArray(ids);
    		List<FeFileCenter> fileCenters = feFileCenterService.getFeFileByIds(super.getExchangeId(), idsInteger);
    		if (CollectionUtils.isNotEmpty(fileCenters) && ObjectUtils.notEqual(idsInteger.length, fileCenters.size())) {
    			//-- 要下载文件Id数组个数和返回的文件地址个数不一致
    			return ;
    		}
    		
    		//-- 2、转换成文件列表
    		List<File> files = this.toFileList(fileCenters);
    		//-- 检查需要下载多文件列表中文件路径是否都存在
    		for (File file : files) {
    			if (!file.exists()) {
    				//-- 需要下载的文件中存在不存在地址
    				return ;
    			}
    		}
    		
    		//-- 3、响应头的设置
    		String downloadName = UUIDUtil.getUUID() + ".zip";
    		HttpServletResponse response = CompressDownloadUtil.setDownloadResponse(super.response(), downloadName);
    		
    		//-- 4、第一种方案:
    		//-- 指定ZIP压缩包路径
    //		String zipFilePath = this.setZipFilePath(downloadName);
    //		try {
    //			//-- 将多个文件压缩到指定路径下
    //			CompressDownloadUtil.compressZip(files, new FileOutputStream(zipFilePath));
    //			//-- 下载压缩包
    //			CompressDownloadUtil.downloadFile(response.getOutputStream(), zipFilePath);
    //			//-- 删除临时生成的ZIP文件
    //			CompressDownloadUtil.deleteFile(zipFilePath);
    //		} catch (IOException e) {
    //			Xlogger.error(XMsgError.buildSimple(CompressDownloadUtil.class.getName(), "downloadallfiles", e));
    //		}
    		
    		//-- 5、第二种方案:
    	   try {
    		    //-- 将多个文件压缩写进响应的输出流
    			CompressDownloadUtil.compressZip(files, response.getOutputStream());
    		} catch (IOException e) {
    			Xlogger.error(XMsgError.buildSimple(CompressDownloadUtil.class.getName(), "downloadallfiles", e));
    		}
    		
    	}
    
    	/**
    	 * 设置临时生成的ZIP文件路径
    	 *
    	 * @param fileName
    	 * @return 
    	 * @author hongwei.lian
    	 * @date 2018年9月7日 下午3:54:13
    	 */
    	private String setZipFilePath(String fileName) {
    		String zipPath = sysParamService.getCompressDownloadFilePath();
    		File zipPathFile = new File(zipPath);
    		if (!zipPathFile.exists()) {
    			zipPathFile.mkdirs();
    		}
    		return zipPath + File.separator + fileName;
    	}
    
    	/**
    	 * 将fileCenters列表转换为File列表
    	 *
    	 * @param fileCenters
    	 * @return 
    	 * @author hongwei.lian
    	 * @date 2018年9月6日 下午6:54:16
    	 */
    	private List<File> toFileList(List<FeFileCenter> fileCenters) {
    		return fileCenters.stream()
                                         .map(feFileCenter -> {
                                        	 //-- 获取每个文件的路径
                                        	 String filePath = this.getSysFilePath(feFileCenter.getFileTypeId());
                                             return new File(filePath + feFileCenter.fileLink());})
                                         .collect(Collectors.toList());
    	}
    	
    	/**
    	 * 获取文件类型对应存储路径
    	 *
    	 * @param fileTypeId
    	 * @return 
    	 * @author hongwei.lian
    	 * @date 2018年9月5日 下午2:01:53
    	 */
    	private String getSysFilePath(Integer fileTypeId){
    		SysParamPo sysmParam = sysParamService.getByParamKey(SysParamKey.FC_UPLOAD_ADDRESS.value);
    		String filePath = Objects.nonNull(sysmParam) ? sysmParam.getParamValue() : "";
    		return filePath + fileTypeId + File.separator;
    	}
    
    }

    压缩下载工具类

    package com.huajin.jgoms.util;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Arrays;
    import java.util.List;
    import java.util.Objects;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    
    import javax.servlet.http.HttpServletResponse;
    
    import com.huajin.baymax.logger.XMsgError;
    import com.huajin.baymax.logger.Xlogger;
    
    /**
     * 压缩下载工具类
     *
     * @author hongwei.lian
     * @date 2018年9月6日 下午6:34:56
     */
    public class CompressDownloadUtil {
    	
    	private CompressDownloadUtil() {}
    	
    	/**
    	 * 设置下载响应头
    	 *
    	 * @param response
    	 * @return 
    	 * @author hongwei.lian
    	 * @date 2018年9月7日 下午3:01:59
    	 */
    	public static HttpServletResponse setDownloadResponse(HttpServletResponse response, String downloadName) {
    		response.reset();
    		response.setCharacterEncoding("utf-8");
    		response.setContentType("application/octet-stream");
    		response.setHeader("Content-Disposition", "attachment;fileName*=UTF-8''"+ downloadName);
    		return response;
    	}
    	
    	/**
    	 * 字符串转换为整型数组
    	 *
    	 * @param param
    	 * @return 
    	 * @author hongwei.lian
    	 * @date 2018年9月6日 下午6:38:39
    	 */
    	public static Integer[] toIntegerArray(String param) {
    		return Arrays.stream(param.split(","))
                                  .map(Integer::valueOf)
                                  .toArray(Integer[]::new);
    	}
    	
    	/**
    	 * 将多个文件压缩到指定输出流中
    	 *
    	 * @param files 需要压缩的文件列表
    	 * @param outputStream  压缩到指定的输出流
    	 * @author hongwei.lian
    	 * @date 2018年9月7日 下午3:11:59
    	 */
    	public static void compressZip(List<File> files, OutputStream outputStream) {
    		ZipOutputStream zipOutStream = null;
    		try {
    			//-- 包装成ZIP格式输出流
    			zipOutStream = new ZipOutputStream(new BufferedOutputStream(outputStream));
    			// -- 设置压缩方法
    			zipOutStream.setMethod(ZipOutputStream.DEFLATED);
    			//-- 将多文件循环写入压缩包
    			for (int i = 0; i < files.size(); i++) {
    				File file = files.get(i);
    				FileInputStream filenputStream = new FileInputStream(file);
    				byte[] data = new byte[(int) file.length()];
    				filenputStream.read(data);
    				//-- 添加ZipEntry,并ZipEntry中写入文件流,这里,加上i是防止要下载的文件有重名的导致下载失败
    				zipOutStream.putNextEntry(new ZipEntry(i + file.getName()));
    				zipOutStream.write(data);
    				filenputStream.close();
    				zipOutStream.closeEntry();
    			}
    		} catch (IOException e) {
    			Xlogger.error(XMsgError.buildSimple(CompressDownloadUtil.class.getName(), "downloadallfiles", e));
    		}  finally {
    			try {
    				if (Objects.nonNull(zipOutStream)) {
    					zipOutStream.flush();
    					zipOutStream.close();
    				}
    				if (Objects.nonNull(outputStream)) {
    					outputStream.close();
    				}
    			} catch (IOException e) {
    				Xlogger.error(XMsgError.buildSimple(CompressDownloadUtil.class.getName(), "downloadallfiles", e));
    			}
    		}
    	}
    	
    	/**
    	 * 下载文件
    	 *
    	 * @param outputStream 下载输出流
    	 * @param zipFilePath 需要下载文件的路径
    	 * @author hongwei.lian
    	 * @date 2018年9月7日 下午3:27:08
    	 */
    	public static void downloadFile(OutputStream outputStream, String zipFilePath) {
    		File zipFile = new File(zipFilePath);
    		if (!zipFile.exists()) {
    			//-- 需要下载压塑包文件不存在
    			return ;
    		}
    		FileInputStream inputStream = null;
    		try {
    			inputStream = new FileInputStream(zipFile);
    			byte[] data = new byte[(int) zipFile.length()];
    			inputStream.read(data);
    			outputStream.write(data);
    			outputStream.flush();
    		} catch (IOException e) {
    			Xlogger.error(XMsgError.buildSimple(CompressDownloadUtil.class.getName(), "downloadZip", e));
    		} finally {
    			try {
    				if (Objects.nonNull(inputStream)) {
    					inputStream.close();
    				}
    				if (Objects.nonNull(outputStream)) {
    					outputStream.close();
    				}
    			} catch (IOException e) {
    				Xlogger.error(XMsgError.buildSimple(CompressDownloadUtil.class.getName(), "downloadZip", e));
    			}
    		}
    	}
    	
    	/**
    	 * 删除指定路径的文件
    	 *
    	 * @param filepath 
    	 * @author hongwei.lian
    	 * @date 2018年9月7日 下午3:44:53
    	 */
    	public static void deleteFile(String filepath) {
    		File file = new File(filepath);
    		deleteFile(file);
    	}
    	
    	/**
    	 * 删除指定文件
    	 *
    	 * @param file 
    	 * @author hongwei.lian
    	 * @date 2018年9月7日 下午3:45:58
    	 */
    	public static void deleteFile(File file) {
    		//-- 路径为文件且不为空则进行删除  
    	    if (file.isFile() && file.exists()) {  
    	        file.delete();  
    	    } 
    	}
    
    }
    

    测试

    通过交易运营平台上传测试资料

    登录会员运营平台进行下载

    下载下来的ZIP格式为文件

    解压后,打开文件是否可用:

     

    总结:

    这个过程中出现了很多问题,后面会有文章逐步分析出错和解决方案。

    上述两种方案都行,但是为了响应速度更快,可以省略压缩成ZIP的临时文件的时间,因此采用了第二种解决方案。

     

    展开全文
  • 最后才想到Mac用有自带命令可以处理压缩文件,于是在网上找了找,如下: 使用 zip 命令压缩文件 使用 zip 命令压缩文件,并结合 split 命令来分卷 格式:zip - <路径><文件名> | split -b <压缩文件...
    网上看用各种软件压缩,本人是了几个压缩软件没一个有用的。最后才想到Mac用有自带命令可以处理压缩文件,于是在网上找了找,如下:
    

    使用 zip 命令压缩文件
    使用 zip 命令压缩文件,并结合 split 命令来分卷
    格式:zip - <路径><文件名> | split -b <压缩文件大小> -a <后缀数量> <目标文件名>
    注意:目标文件后面放一个点

    zip - /Users/eagle/Downloads/informatica_1041_server_linux-x64.zip  | split -b 3670016k -a 3  - informatica_1041_server_linux-x64.zip**.**
    

    在这里插入图片描述
    zip - largefile | split -b 500k
    上述命令将文件 largefile 压缩成 zip 包并分卷成不超过 500k 的文件,分解后文件名默认是 x* ,后缀为 2 位 a-z 字母,如 aa、ab。
    要合并已分解的文件,可使用cat命令恢复成 zip 文件后使用 unzip 或其它主流解压软件解压:

    cat x* > file.zip
    使用 tar 命令压缩文件
    我们也可以使用 tar 命令来创建压缩文件,如:

    tar czvf - largefile | split -b 500k
    同样,使用 tar 解压:

    cat x* | tar xzvf -
    命名规则
    如需指定文件前缀或后缀长度可使用 split 命令参数指定,如:

    zip - largefile | split -b 500k -a 3 - file.zip
    上述命令指定了 file.zip 为文件名,后缀使用 3 位 a-z 字母。
    另外,如果将分解后文件的后缀改为 .zip.001 、 .zip.002 等,即可使用主流解压工具直接解压(如 Mac 上常用的 The Unarchiver )。

    Windows 端解压
    想到同事使用的是 Windows ,并且为了尽量降低沟通成本,我们可以下载免费的 7-Zip 工具(官网在这),并编写一个 bat 来合并分卷并解压,脚本如下:

    copy /B file.zip.001 + file.zip.002 + file.zip.003 + file.zip.004 file.zip
    7z x file.zip
    del file.zip
    第一行将分卷合并,第二行调用 7-Zip 工具解压合并后的文件,第三行删除压缩文件。
    将文件保存为 点我解压.bat ,和分卷文件以及下载的 7-Zip 工具 7z.exe 放在同一个目录下。
    这样,在 Windows 上下载所有文件后,直接双击 点我解压.bat 即可解压出源文件。当然,如果他的系统安装了主流的压缩软件,如 WinRAR 等,则直接双击任何一个分卷文件即可解压。

    作者:小白不是总
    链接:https://www.jianshu.com/p/22f5ae2beda4

    1.终端进入要压缩的目录:如要压缩桌面上的navicat101_premium_en_for_mac目录则 cd /Users/username/Desktop/

    2.先压缩成.tar.gz:tar -zcvf <压缩文件名>.tar.gz <要压缩的文件夹或者文件名>

    -z表明创建zip压缩文件,后面的后缀一定要是tar.gz
      -c创建打包文件
      -v显示压缩过程
      -f归档名

    如:tar -zcvf navicat101_premium_en_for_mac.tar.gz navicat101_premium_en_for_mac

    3.split -b <分卷大小> <要拆分的文件名> <分卷名前缀>

    如:split -b 10240k navicat101_premium_en_for_mac.tar.gz navicat101_premium_en_for_mac.zip.

    2和3两步可以合成一步。tar -zcvf - navicat101_premium_en_for_mac | split -b 10240k - navicat101_premium_en_for_mac.tar.gz.

    4.分卷文件合并解压:

    如:cat navicat101_premium_en_for_mac.tar.gz.*>navicat101_premium_en_for_mac.tar.gz

    合并解压:cat navicat101_premium_en_for_mac.tar.gz.* | tar -zxv

    文件解压到navicat101_premium_en_for_mac目录下。
    参考网页:
    https://www.cnblogs.com/greywolf/archive/2013/05/27/3101519.html

    展开全文
  • 针对WINZIP压缩文件,黑客最常使用的工具就是Elcomsoft公司的“Advanced ZIP Password Recovery”(简称AZPR),AZPR提供了一个图形化的用户界面,黑客经过几个简单的步骤就可以破解ZIP压缩文件包的密...

    压缩文件密码破解

    如果你想要破解是很难的,不知道你的密码长度有多少,破解所需的时间是根据你的密码长度来算的,方法我给你:

    1.WINZIP压缩文件的破解

    针对WINZIP压缩文件,黑客最常使用的工具就是Elcomsoft公司的“Advanced ZIP Password Recovery”(简称AZPR),AZPR提供了一个图形化的用户界面,黑客经过几个简单的步骤就可以破解ZIP压缩文件包的密码。

    第一步:配置破解工具

    首 先在“ZIP password-encrypted file”打开被加密的ZIP压缩文件包,可以利用浏览按钮或者功能键F3来选择将要解密的压缩文件包;在“Type of attack”中选择攻击方式:包括“Brute-force”(强力攻击)、“mask”(掩码搜索)、“Dictionary”(字典攻击)等;在 “Brute-force range options”设定强力攻击法的搜索范围,如果用户了解口令的组合特点,通过设定以下选择可以大大缩短搜索时间;在“Start from”中 ,当用户知道口令的起始字符序列时,可以设定该选项。例如,当用户知道口令全部使用小写字母,长度是5,并且以字母“k”开头,那么可以在该项填写 “kaaaa”,AZPR将从这个口令开始依次向后搜索所有的可能密码;在“Password length”中可以设定口令长度,这也是一个决定搜索时间的重要选项; “Auto-save”:自动存储选项的功能是定期自动保存软件当前设置与当前工作状态,这些关键参数将会定期自动保存在一个名为 “~azpr.ini”,用户可以自行指定保存参数的文件名、自动保存的时间间隔等等,该选项使得用户能够继续上次中断的解密进程。
    第二步:开始破解

    经 过以上几个关键的选项的设置,黑客就可以开始破解你的ZIP文件了,点击“Start”按钮即可进行解密运算,由于AZPR有以上保存参数和状态的功能, 用户随时可以中断或者继续运算过程。当密码找到后,用户会在结果窗口中看到密码内容、试探密码总数、破解消耗时间、平均运算速度等信息。如果没有找到密 码,也会有相应的提示信息。

    2.WINRAR压缩文件的破解

    针对WINRAR压缩文件,Elcomsoft公司也推 出了“Advanced RAR Password Recovery”,该软件解密速度很快,可以帮你找回RAR文件的密码,注册后可以解开多达128位密码。它提供有预估算出密码所需要的时间;可中断计 算与恢复继续前次的计算。然而到黑客手里也就变成了一个破解的工具,其具体使用方法与“Advanced ZIP Password Recovery”大致相同,这里不多介绍了。
    3. 当心“多功能密码破解软件”作祟

    此外,目前还有一款名为“多功能密码破 解软件”的工具值得大家注意,也是黑客经常使用的。该软件可以破解Access97/2000/xp密码,Word/Excel97/2000/xp、 QQ(本地和在线)、SQLSERVER(本地和远程)、windows98登陆密码、ZIP/RAR文件密码,星号密码察看,可以察看任何显示为*的密 码内容(网页除外)。ZIP/RAR文件密码也难逃该软件一“劫”!下面看看黑客到底是如何利用这个工具兴风作浪的。

    黑客安装并运行该软件,切换到“ZIP/RAR”选项
    点击“浏览”按钮找到本地硬盘上要破解的ZIP/RAR文件,然后需要进行以下的设置:

    (1)“破解位数设置”:你可以设置好密码最小长度和密码最大长度。

    (2)“破解字符设置”:你可以选择是用数字、小写字母、大写字母中一个或者多个,这需要根据设置的压缩包的密码来进行选择,当然,如果都选的话,那么破解的速度肯定更慢,花费的时间也更长。

    设置完毕后,点击“开始”按钮即可进行破解,经过一段时间的破解后,最后在“进度”框中显示破解的密码,
    三、巧妙设置,让压缩文件无懈可击

    除 了用来压缩文件,我们还常常把WinRAR、WINZIP当作一个加密软件来使用,在压缩文件的时候设置一个密码就可以达到保护数据的目的了。正因为如 此,专门针对压缩文件密码的破解软件也是遍地开花。密码的长短对于现在的破解软件来说,已经不是最大的障碍了。那么,怎样才可以让压缩加密的文件牢不可破 呢? 除了做好日常的安全防范工作外,我们还要巧妙进行以下设置:

    现在的破解软件在破解加密文件密码的时候总要指定一个Encrypted File(目标文件),然后根据字典使用穷举法来破解密码。但是如果我们将多个需要加密的文件压缩在一起,然后为每一个文件设置不同的密码,那破解软件就无可奈何了,具体操作如下:

    1.按照常规的方法把它压缩并且设置一个密码;
    2.准备一个其他文件(当然这个文件小一点最好了,因为我们只是利用它来迷惑破解软件而已);
    3.在WinRAR的工作窗口中打开我们第一步已经压缩好的加密文件,在“命令”菜单中选择“添加文件到压缩包”菜单选项
    4.在弹出的“请选择要添加的文件”对话框中选择我们准备的“其他文件”,点击“确定”按钮后回到“压缩文件名字和参数”对话框;

    5.在“高级”选项卡标签中点击“设置密码”按钮设置一个不同的密码,然后开始压缩即可
    经 过以上步骤,现在两个密码已经设置完成了(如果添加了多个文件,也可以给每个文件设置不同的密码,如果你担心自己会忘记,只设两个密码也可以达到目的)。 打开压缩文件可以看到每一个文件名的右上角都有一个表示加密的星号,但是打开其中不同的文件都需要相对应的密码,使用破解软件是得不到正确密码的。这种方 法对用WinZip加密的文件同样适用。

    我上网下载了rar压缩文件,有密码,用arpr工具怎么破解不了,

    ARPR这个东西很难弄到正版的,所以一般只能三位密码以内的破解,即使弄到正版的你不知道加密时用的密码库,密码位数,给你连续破一年也不一定解出来,所以最好联系加密的人。毕竟也是加了密的,自己破解也不合法

     

    用ARPR破解压缩包为什么破解的密码只有A

    你是下的那个所谓的汉化版吧...哪个版本有问题的...首先我反对这些软件...不过你想要的话留下邮箱我发给你

    如何破解RAR文件的压缩密码?

    上网找破解工具啊,下面是我Www.BKJIA.com以前收集过的不知道还能不能下,呵呵,你看看,如果不能你可以自己上网搜搜的

    多功能密码破解软件:
    http://www.onlinedown.net/soft/38220.htm

    Advanced RAR Password Recovery
    http://www.onlinedown.net/soft/8271.htm

    RAR Password Cracker
    http://www.onlinedown.net/soft/4895.htm

    Turbo ZIP Cracker V0.3
    ZIP密码暴破工具,支持由WinZIP、PKZIP以及其它兼容ZIP格式的软件(比如WinRAR等)加密的ZIP压缩包,破解速度比较理想。
    http://www.skycn.com/soft/22909.html

    展开全文
  • 一下代码实现的是将个... * 压缩文件 * @param exportFilePathList * @param response */ public static void downloadPictureZip(List&lt;String&gt; exportFilePathList, HttpServletResponse ...

    一下代码实现的是将多个文件进行压缩,采用的是边压缩边下载的方式

    /**
    	 * 压缩文件
    	 * @param exportFilePathList
    	 * @param response
    	 */
    	public static void downloadPictureZip(List<String> exportFilePathList, HttpServletResponse response) {
    		ZipOutputStream zipos = null;
    		try {
    			zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
    			zipos.setMethod(ZipOutputStream.DEFLATED);// 设置压缩方法DEFLATED
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		DataOutputStream os = null;
    		// 循环将文件写入压缩流
    		for (String filePath : exportFilePathList) {
    			File file = new File(filePath);
    			try {
    				// 添加ZipEntry,并ZipEntry中写入文件流
    				zipos.putNextEntry(new ZipEntry(file.getName()));
    				os = new DataOutputStream(zipos);
    				InputStream is = new FileInputStream(file);
    				byte[] b = new byte[100];
    				int length = 0;
    				while ((length = is.read(b)) != -1) {
    					os.write(b, 0, length);
    				}
    				is.close();
    				zipos.closeEntry();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		// 关闭流
    		try {
    			os.flush();
    			os.close();
    			zipos.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}

    完整的请求流程 :以下是 controller层的

    /**
    	 * 导出选中图片 
    	 * @return
    	 */
    	public void exportSelectedResult(){
    		String[] strings = docIds.split(",");
    		//要导出的对象集合
    		List<FeedBackMessage> fbmList=new ArrayList<>();
    		List<String> exportFilePathList= new ArrayList<>();
    		String root = PropertyUtil.get("feedbackpicPath");
    		for(String id:strings){
    			//根据选中图片的ID 查询输数据库  得到图片的名称 
    			FeedBackMessage feedBack=pictureService.findFeedBackMessageById(Integer.valueOf(id));
    			fbmList.add(feedBack);
    		}
    		for(FeedBackMessage feedBack :fbmList){
    			feedBack.setPicPath(root+feedBack.getPicPath());
    			exportFilePathList.add(feedBack.getPicPath());
    		}
    		//设置压缩包的名字
            //解决不同浏览器压缩包名字含有中文时乱码的问题
    		String zipName= DateUtil.getCurrentDate("yyyyMMddHHmmss")+".zip";
    		response.setContentType("APPLICATION/OCTET-STREAM");
    		response.setHeader("Content-Disposition", "attachment; filename="+ zipName);
    		//导出的工具类 
    		PictureUtil.downloadPictureZip(exportFilePathList,response);
    	}

    需要注意的是 不需要进行目录压缩的时候,参数传入文件的名称即可  如下图

     

     

    展开全文
  • java文件压缩成zip文件

    千次阅读 2018-08-15 14:14:05
     文件压缩 */ private static void ZipFiles(java.io.File[] srcfile, java.io.File zipfile) { byte[] buf=new byte[1024]; ZipOutputStream out=null; try { out=new ZipOutputStream(new Fi...
  • 文件下载 //下载单个文件 public void downloadFile(HttpServletResponse response){ String path = "D:\test\ce\1.txt" File file = new File(path); if(file.exists()){ String fil...
  • Java 多文件加密压缩 添加文件加密压缩工具包依赖 <!-- zip4j压缩工具 --> <dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <...
  • 字典越压缩效果越好(压缩文件越小)、压缩速度越慢、压缩时占用内存和cpu越 压缩方式越接近“最好”:压缩效果越好(压缩文件越小)、压缩速度越慢、压缩时占用内存和cpu越 压缩速度快: 字典越小:...
  • HDFS文件压缩

    千次阅读 2020-01-04 18:06:11
    在这种情况下,MapReduce会采用正确的做法,它不会尝试切分gzip压缩文件,因为它知道输入的时gzip压缩文件(通过文件扩展名看出)且gzip不持支切分。这是可行的,但 牺牲了数据的本地性 :一个map任务处理8个HDFS块...
  • mp4视频文件压缩率大概是多大

    千次阅读 2020-10-30 11:38:05
    上一篇介绍了压缩率的计算方法:一帧1920*1080的画面有多少比特,需要多大带宽观看是才不会卡顿? 这次从行测记录仪中找了几个mp4格式的视频文件研究一下。 先看下文件信息: 根据上面文件信息,我们知道这是一...
  • 1 > 鼠标选中待压缩文件-右键-添加到压缩文件。 2 > 在弹出的“压缩文件和参数”窗口-切分压缩分卷(V),大小-下拉菜单中,选择合适的大小或自行填入分卷大小。 3 > 点击确定按钮,就开始
  • 哈夫曼实现文件压缩压缩(c语言)

    万次阅读 多人点赞 2019-01-23 17:04:47
    写一个对文件进行压缩和解压缩的程序,功能如下: ① 可以对纯英文文档实现压缩和解压; ② 较好的界面程序运行的说明。 介绍哈夫曼: 效率最高的判别树即为哈夫曼树 在计算机数据处理中,霍夫曼编码...
  • 一般来说,微信中的视频文件使用手机发送是比较方便的,但是因为有限制,所以想要进行文件传输那么就需要减少文件的大小,最简单的方法就是压缩视频文件! 1.使用手机压缩视频文件,当然是需要第三方软件的支持,...
  • 文件压缩压缩

    千次阅读 2018-09-10 19:12:15
    脑子一热,想到能不能再次压缩文件?没有百度到,想要的答案,自己费事来try try。 看不懂的知识:https://blog.csdn.net/xuchuangqi/article/details/52939705 gzip 对于要压缩的文件,首先使用LZ77算法的一个...
  • 使用Java实现文件压缩打包

    千次阅读 2017-10-17 22:46:45
    引言  在做项目的时候经常会涉及到文件压缩,比如近期用Java Web做一个后台管理,后台有个导出功能,需要统计生成几十个excel文件,然后进行下载,如果不将这些文件进行压缩传送,耗费用户流量不说,用户浏览器...
  • 怎么压缩图片文件大小?

    万次阅读 2018-10-15 14:58:57
    现在的科技发展迅速,图片的像素很高,这样也就导致了图片比较,我们想要将图片上传作为网站的头像都比较麻烦,今天教给大家一种压缩图片文件大小的方法。 1:首先将压缩软件安装到自己的电脑中,打开压缩软件...
  • 1、使用7-Zip‍‍‍将一个大文件压缩个小的压缩包; 2、使用7-Zip将个小的压缩包,解压/合并成一个大文件。 1、使用7-Zip‍‍‍将一个大文件压缩个小的压缩包 1.1 确认电脑本地已经安装“7-Zip”...
  • 压缩、解压 大文件 C#

    2016-04-18 04:03:22
    如何用c#写一个压缩、解压的文件 文件大小为1G左右。我用 ICSharpCode.SharpZipLib.Zip;这个组件,只能实现小文件压缩,不能实现大文件压缩,一压缩就报错。哪位有什么好的方法实现大文件压缩呢。
  • 可以用来压缩打包单文件文件、单个目录、个目录。 Linux打包命令_tar tar命令可以用来压缩打包单文件文件、单个目录、个目录。 常用格式: 单个文件压缩打包 tar czvf my.tar.gz file1 个...
  • linux大文件压缩及解压需要注意问题

    千次阅读 2019-09-09 03:30:02
    压缩大文件,如何后台进行,如何防止终端关闭导致压缩停止,如何输出压缩过程日志,如何使用7z只打包,不压缩,分包压缩
  • java 大文件拆分、压缩传输

    千次阅读 2019-06-25 13:34:53
    每个文件压缩前最大为50M,超出文件限制指标在新文件中存储,新文件序号+1,序号从001开始最大为999,性能文件生成后采用gzip压缩存储。 分析 文件压缩、解压 文件拆分、合并 文件拆分、合并 生成测试文件 ...
  • qt 压缩解压缩文件和文件夹源码

    热门讨论 2011-10-18 11:39:32
    可是使用quazip类库实现文件和文件夹的压缩与解压缩,经测试可以使用
  • Java实现zip文件压缩与解压缩--附完整代码

    万次阅读 多人点赞 2019-07-26 14:54:09
    Java实现文件压缩与解压缩-----zip、.7z1. 基本概念1.1 Java中实现zip的压缩与解压缩1.1.1 基本概念1.1.2 zip压缩代码实现1.3 zip压缩代码改进 1. 基本概念 1.1 Java中实现zip的压缩与解压缩 1.1.1 基本概念 ...
  • pigz线程压缩文件

    万次阅读 2016-09-13 11:35:20
    pigz是linux下线程压缩软件,发音: “pig-zee”。 使用方法: tar cf - mydir | pigz >mydir.tgz 如果文件少可以: tar cvf - mydir | pigz >mydir.tgz 加v参数,显示压缩文件列表。文件多显示会比较费...
  • * 功能:压缩多文件成一个zip文件 * @param srcfile:源文件列表 * @param zipfile:压缩后的文件 */ public static void zipFiles(File[] srcfile, File zipfile) { byte[] buf = new byte[1024]; try { ...
  • 毕业论文文件大小超出要求,压缩文件大小。
  • /** * 定义压缩包 */ String downloadFilename = "压缩包名称.zip"; downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");...response.setContentType("...
  • tar压缩文件

    千次阅读 2020-12-20 10:31:07
    使用tar压缩文件 tar -zcvf test.tar.gz ./test/ 该命令表示压缩当前文件夹下的文件夹test,压缩后缀名为test.tar.gz 如果不需要压缩成gz,只需要后缀为tar格式的,那么输入如下命令: tar -cvf test.tar ./test/ ...
  • //zip文件不存在,则创建文件,用于压缩 if(!zipFile.exists()) zipFile.createNewFile(); int fileCount = 0;//记录压缩了几个文件? try { ZipOutputStream zos = new ZipOutputStream(new FileOutputStream...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,027,576
精华内容 411,030
关键字:

压缩文件一般多大