精华内容
下载资源
问答
  • 步:文件压缩和解压缩方法 //解压gzip文件 public static boolean extractZip(File file, File parent) { ZipFile zf = null; try { zf = new ZipFile(file); Enumeration entries = zf.entries();...

            第一步:文件压缩和解压缩方法

     //解压gzip文件
    	public static boolean extractZip(File file, File parent) {
    		ZipFile zf = null;
    		try {
    			zf = new ZipFile(file);
    			Enumeration<? extends ZipEntry> entries = zf.entries();
    			if (entries == null)
    				return false;
    
    			final byte[] buf = new byte[256];
    
    			while (entries.hasMoreElements()) {
    				ZipEntry entry = entries.nextElement();
    				if (entry == null)
    					continue;
    
    				if (entry.isDirectory()) {
    					File dir = new File(parent, entry.getName());
    					dir.mkdirs();
    					continue;
    				}
    
    				File dstFile = new File(parent, entry.getName());
    				if (!dstFile.exists()) {
    					dstFile.getParentFile().mkdirs();
    				}
    
    				InputStream fis = zf.getInputStream(entry);
    				BufferedInputStream bis = new BufferedInputStream(fis);
    				FileOutputStream fos = new FileOutputStream(dstFile);
    				BufferedOutputStream bos = new BufferedOutputStream(fos);
    				int read = 0;
    				while ((read = bis.read(buf)) > 0) {
    					bos.write(buf, 0, read);
    				}
    				fis.close();
    				bis.close();
    				bos.close();
    				fos.close();
    			}
    			return true;
    		} catch (Exception e) {
    			e.printStackTrace();
    			return false;
    		} finally {
    			try {
    				zf.close();
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    	/**
    	 * 对将单个文件进行压缩
    	 * 
    	 * @param source
    	 *            源文件
    	 * @param target
    	 *            目标文件
    	 * @throws IOException
    	 */
    	public static void zipFile(String source, String target) throws IOException {
    		FileInputStream fin = null;
    		FileOutputStream fout = null;
    		GZIPOutputStream gzout = null;
    		try {
    			fin = new FileInputStream(source);
    			fout = new FileOutputStream(target);
    			gzout = new GZIPOutputStream(fout);
    			byte[] buf = new byte[1024];
    			int num;
    			while ((num = fin.read(buf)) != -1) {
    				gzout.write(buf, 0, num);
    			}
    		} finally {
    			if (gzout != null)
    				gzout.close();
    			if (fout != null)
    				fout.close();
    			if (fin != null)
    				fin.close();
    		}
    	}
        //多个文件压缩成gzip文件
    	public static void mutileFileToGzip(ArrayList<String> filePaths, String targetFileName) {
    		try {
    			File file = new File(targetFileName);
    			FileOutputStream fout = new FileOutputStream(file);
    			BufferedInputStream bin = null;
    			ZipOutputStream zout = new ZipOutputStream(fout);
    			for (String fileSource : filePaths) {
    				String[] fileNames = fileSource.split("/");
    				zout.putNextEntry(new ZipEntry(fileNames[fileNames.length - 1]));
    				int c;
    				bin = new BufferedInputStream(new FileInputStream(fileSource));
    				while ((c = bin.read()) != -1) {
    					zout.write(c);
    				}
    				bin.close();
    			}
    			zout.close();
    
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
    		System.out.println("压缩成功!");
    
    	}
            

                第二步、如何调用?

                1、将多个文件打包成gzip:

    ArrayList<String> filePaths = new ArrayList<String>();
    filePaths.add(memeDirectoryName + "/meta.json");
    imgPath=java.net.URLDecoder.decode(imgPath,"UTF-8"); 
    filePaths.add(imgPath);
    String targetZipFileName = memeDirectoryName + File.separator + gzipName;
    targetZipFileName=java.net.URLDecoder.decode(targetZipFileName,"UTF-8"); 
    FileUtils.mutileFileToGzip(filePaths, targetZipFileName);

                2、gzip解压成多个文件

    FileUtils.extractZip(new File("/Users/figo/Downloads/memepackages/test1/test1.gzip"), new File("/Users/figo/Downloads/memepackages/test1/"));
    


                3、如何获取当前文件所在的路径?
    public static String getRealPath() {
    		String realPath = "";
    		try {
    			File file = new File(ReadExcelWriteZip.class.getResource("/").getPath());// 显示该jar所在的路径
    			// String realPath
    			// =ReadExcelWriteZip.class.getClassLoader().getResource("").getFile();
    			realPath = file.getAbsolutePath();
    			realPath=java.net.URLDecoder.decode(realPath,"UTF-8"); 
    		} catch (Exception e) {
    			if (e != null) {
    				e.printStackTrace();
    				realPath = e.getMessage();
    			}
    		}
    		return realPath;
    	}
                 

                  4、如何通过命令行调用jar文件

                  通过eclipse导出可执行的jar,其实双击这个jar就可以执行里面的Main函数的,不过也可以写一个bat文件,双击后在windows操作系统运行

                 bat文件这么写:      java -jar  test.jar   

    展开全文
  • 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...
    /**
     文件压缩
    */
    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 FileOutputStream(
                    zipfile));
            for (int i=0; i < srcfile.length; i++) {
                FileInputStream in=new FileInputStream(srcfile[i]);
                out.putNextEntry(new ZipEntry(srcfile[i].getName()));
                int len;
                while ((len=in.read(buf)) > 0) {
                    out.write(buf, 0, len);
                }
                out.closeEntry();
                in.close();
            }
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

     

    private void test(String zipName){

    File srcfile[]=new File[5];//数量可以通过本身的业务逻辑获取
    
    for (int i=0;  i < 5; i++) { //这里是在模拟添加文件  修改为自己要压缩的文件
        srcfile[i]=new File("file"+i);
    }
    
    String zipname=zipName + ".zip";
    File zip=new File(zipname);// 压缩文件
    if (zip.exists()) {
        zip.createNewFile();
    }
    ZipFiles(srcfile, zip);

    }

    我这边用到的是下载excel,因为数据量太大,弄的多线程生成excel,每个excel中有5000条数据,全部生成完成后将这些excel打包成压缩文件提供前端下载压缩文件。

     

    展开全文
  • java多个文件压缩打包zip下载

    万次阅读 2018-12-21 14:53:53
    java多个文件压缩打包zip下载 如果实现批量操作一些文件,使之压缩打包zip下载? 具体实现步骤如下: 设置下载文件名编码 创建zip输出流ZipOutputStream 将需要下载的文件流循环写入ZipOutputStream 关闭各个流...

    java多个文件压缩打包成zip下载


    如果实现批量操作一些文件,使之压缩打包成zip下载?
    具体实现步骤如下:

    1. 设置下载文件名编码
    2. 创建zip输出流ZipOutputStream
    3. 将需要下载的文件流循环写入ZipOutputStream
    4. 关闭各个流

    话不多说,直接上代码
    service层方法(关键):

    @Override
       public void downloadAllFile(HttpServletResponse response, String processInstanceId) {
       	String downloadName = "xxx附件.zip";
       	try {
       		response.setContentType("multipart/form-data");
       		response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode(downloadName, "UTF-8"));
       	} catch (UnsupportedEncodingException e) {
       		throw new HrmsException("下载文件名编码时出现错误.", e);
       	}
       	
       	OutputStream outputStream = null;
       	ZipOutputStream zos = null;
       	try {
       		outputStream = response.getOutputStream();
       		zos = new ZipOutputStream(outputStream);
       		// 将文件流写入zip中
       		downloadTolocal(zos,processInstanceId);
       	
       	} catch (IOException e) {
       		logger.error("downloadAllFile-xxx下载全部附件失败,processInstanceId=[{}],错误信息=[{}]",processInstanceId,e);
       	}finally {
       		if(zos != null) {
       			try {
       				zos.close();
       			} catch (Exception e2) {
       				logger.info("关闭输入流时出现错误",e2);
       			}
       		}
       		if(outputStream != null) {
       			try {
       				outputStream.close();
       			} catch (Exception e2) {
       				logger.info("关闭输入流时出现错误",e2);
       			}
       		}
       		
       	}
       	
       }
       
       private void downloadTolocal(ZipOutputStream zos,String processInstanceId) throws IOException {
       	Map<String, String> pm = new HashMap<String, String>();
       	pm.put("processInstanceId", processInstanceId);
       	//获取文件信息(此处为业务代码,可根据自己的需要替换)
       	List<Map<String,String>> fileInfoList = this.findByStatement("getAllFileInfo",pm);
       	
       	for (Map<String, String> map : fileInfoList) {
       		String fileId = map.get("fileId");
       		//文件名称(带后缀)
       		String fileName = map.get("fileName");
       		InputStream is = null;
       		BufferedInputStream in = null;
       		byte[] buffer = new byte[1024];
       		int len;
       		//创建zip实体(一个文件对应一个ZipEntry)
           	ZipEntry entry = new ZipEntry(fileName);
           	try {
           	       //获取需要下载的文件流
           		is = ossFileManager.getFile(fileId);
       			in = new BufferedInputStream(is);
           		zos.putNextEntry(entry);
           		//文件流循环写入ZipOutputStream
               	while ((len = in.read(buffer)) != -1 ) {
               		zos.write(buffer, 0, len);
               		}
       		} catch (Exception e) {
       			logger.info("xxx--下载全部附件--压缩文件出错",e);
       		}finally {
       			if(entry != null) {
       				try {
       					zos.closeEntry();
       				} catch (Exception e2) {
       					logger.info("xxx下载全部附件--zip实体关闭失败",e2);
       				}
       			}
       			if(in != null) {
       				try {
       					in.close();
       				} catch (Exception e2) {
       					logger.info("xxx下载全部附件--文件输入流关闭失败",e2);
       				}
       			}
       			if(is != null) {
       				try {
       					is.close();
       				}catch (Exception e) {
       					logger.info("xxx下载全部附件--输入缓冲流关闭失败",e);
       				}
       			}
       			
       			
       		}
               	
              } 
       }
    

    controller层接口:

    	/**
        * 下载全部附件
        */
       @RequestMapping(value = "/downloadAllFile/{processInstanceId}", method = RequestMethod.GET)
       public void  downloadAllFile(HttpServletResponse response,@PathVariable("processInstanceId") String processInstanceId) {
       	floCnbCompetitionLimitService.downloadAllFile(response,processInstanceId);
       }
    

    前端调用接口,便可在浏览器中直接下载zip文档下来

    展开全文
  • tar命令 可以用来压缩打包单文件...多个文件压缩打包 tar czvf my.tar.gz file1 file2,...(file*)(也可以给file*文件mv 目录在压缩) 单个目录压缩打包 tar czvf my.tar.gz dir1 多个目录压缩打包 tar czvf my.t

    tar命令

    可以用来压缩打包单文件、多个文件、单个目录、多个目录。

    Linux打包命令_tar

    tar命令可以用来压缩打包单文件、多个文件、单个目录、多个目录。

    常用格式:

    单个文件压缩打包 tar czvf my.tar.gz file1

    多个文件压缩打包 tar czvf my.tar.gz file1 file2,...(file*)(也可以给file*文件mv 目录在压缩)

    单个目录压缩打包 tar czvf my.tar.gz dir1

    多个目录压缩打包 tar czvf my.tar.gz dir1 dir2

    解包至当前目录:tar xzvf my.tar.gz

    cpio

    含子目录find x* | cpio -o > /y/z.cpio

    不含子目录ls x* | cpio -o > /y/z.cpio

    解包: cpio -i < /y/z.cpio

    [root@linux ~]# tar [-cxtzjvfpPN] 文件与目录 ....

    参数:

    -c :建立一个压缩文件的参数指令(create 的意思);

    -x :解开一个压缩文件的参数指令!

    -t :查看 tarfile 里面的文件!

    特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!

    因为不可能同时压缩与解压缩。

    -z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩?

    -j :是否同时具有 bzip2 的属性?亦即是否需要用 bzip2 压缩?

    -v :压缩的过程中显示文件!这个常用,但不建议用在背景执行过程!

    -f :使用档名,请留意,在 f 之后要立即接档名喔!不要再加参数!

       例如使用『 tar -zcvfP tfile sfile』就是错误的写法,要写成

       『 tar -zcvPf tfile sfile』才对喔!

    -p :使用原文件的原来属性(属性不会依据使用者而变)

    -P :可以使用绝对路径来压缩!

    -N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!

    --exclude FILE:在压缩的过程中,不要将 FILE 打包!

    范例:

    范例一:将整个 /etc 目录下的文件全部打包成为 /tmp/etc.tar

    [root@linux ~]# tar -cvf /tmp/etc.tar /etc <==仅打包,不压缩!

    [root@linux ~]# tar -zcvf /tmp/etc.tar.gz /etc <==打包后,以 gzip 压缩

    [root@linux ~]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包后,以 bzip2 压缩

    # 特别注意,在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。

    # 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar file ~

    # 如果加 j 参数,则以 .tar.bz2 来作为附档名啊~

    # 上述指令在执行的时候,会显示一个警告讯息:

    # 『tar: Removing leading `/' from member names』那是关於绝对路径的特殊设定。

    范例二:查阅上述 /tmp/etc.tar.gz 文件内有哪些文件?

    [root@linux ~]# tar -ztvf /tmp/etc.tar.gz

    # 由於我们使用 gzip 压缩,所以要查阅该 tar file 内的文件时,

    # 就得要加上 z 这个参数了!这很重要的!

    范例三:将 /tmp/etc.tar.gz 文件解压缩在 /usr/local/src 底下

    [root@linux ~]# cd /usr/local/src

    [root@linux src]# tar -zxvf /tmp/etc.tar.gz

    # 在预设的情况下,我们可以将压缩档在任何地方解开的!以这个范例来说,

    # 我先将工作目录变换到 /usr/local/src 底下,并且解开 /tmp/etc.tar.gz ,

    # 则解开的目录会在 /usr/local/src/etc 呢!另外,如果您进入 /usr/local/src/etc

    # 则会发现,该目录下的文件属性与 /etc/ 可能会有所不同喔!

    范例四:在 /tmp 底下,我只想要将 /tmp/etc.tar.gz 内的 etc/passwd 解开而已

    [root@linux ~]# cd /tmp

    [root@linux tmp]# tar -zxvf /tmp/etc.tar.gz etc/passwd

    # 我可以透过 tar -ztvf 来查阅 tarfile 内的文件名称,如果单只要一个文件,

    # 就可以透过这个方式来下达!注意到! etc.tar.gz 内的根目录 / 是被拿掉了!

    范例五:将 /etc/ 内的所有文件备份下来,并且保存其权限!

    [root@linux ~]# tar -zxvpf /tmp/etc.tar.gz /etc

    # 这个 -p 的属性是很重要的,尤其是当您要保留原本文件的属性时!

    范例六:在 /home 当中,比 2005/06/01 新的文件才备份

    [root@linux ~]# tar -N '2005/06/01' -zcvf home.tar.gz /home

    范例七:我要备份 /home, /etc ,但不要 /home/dmtsai

    [root@linux ~]# tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc

    范例八:将 /etc/ 打包后直接解开在 /tmp 底下,而不产生文件!

    [root@linux ~]# cd /tmp

    [root@linux tmp]# tar -cvf - /etc | tar -xvf -

    # 这个动作有点像是 cp -r /etc /tmp 啦~依旧是有其有用途的!

    # 要注意的地方在於输出档变成 - 而输入档也变成 - ,又有一个 | 存在~

    # 这分别代表 standard output, standard input 与管线命令啦!

    # 这部分我们会在 Bash shell 时,再次提到这个指令跟大家再解释啰!

    展开全文
  • 1、使用7-Zip‍‍‍将一个文件压缩成多个小的压缩包; 2、使用7-Zip将多个小的压缩包,解压/合并成一个大文件。 1、使用7-Zip‍‍‍将一个文件压缩成多个小的压缩包 1.1 确认电脑本地已经安装“7-Zip”...
  • 本文简单介绍了WinRAR如何把一个文件压缩成几个固定大小的文件以及如何解压这几个文件。 1、压缩 1 > 鼠标选中待压缩文件-右键-添加到压缩文件。 2 > 在弹出的“压缩文件和参数”窗口-切分压缩分卷...
  • 一个文件夹下有txt文件,csv文件,zip文件,怎么将该文件夹下的所有csv文件压缩成zip包,并删掉原始的csv文件,大神能不能给个例子看一下,谢谢了。
  • 有些时候我们需要把同一文件夹内的多个文件分别压缩单独的压缩文件,如C盘中有一个名为Test的文件夹,里面有1.txt,2.txt,3.txt……等文件,如果要把它们分别压缩1.rar,2.rar,3.rar……等文件,按照一般的...
  • tar命令可以用来压缩打包单文件...常用格式:单个文件压缩打包 tar czvf my.tar.gz file1多个文件压缩打包 tar czvf my.tar.gz file1 file2,...(file*)(也可以给file*文件mv 目录在压缩)单个目录压缩打包 tar c...
  • 一下代码实现的是将多个文件进行压缩,采用的是边压缩边下载的方式 /** * 压缩文件 * @param exportFilePathList * @param response */ public static void downloadPictureZip(List&lt;String&...
  • 所以在最好会产生很多压缩文件。这是非常头痛的事情。 前段时间迁移数据库文件。a服务器里面我备份的sql文件有750g之后想通过scp 复制到别的服务器上去。到时不知道是由于网络原因还是稳健太大的原因。在辅助...
  • 使用Java实现多个文件压缩打包

    千次阅读 2017-10-17 22:46:45
    引言  在做项目的时候经常会涉及到文件压缩,比如近期用Java Web做一个后台管理,后台有个导出功能,需要统计生成几十个excel文件,然后进行下载,如果不将这些文件进行压缩传送,耗费用户流量不说,用户浏览器...
  • 如果仅仅需要对文件进行压缩
  • /* @creates a compressed zip file 将多个文件压缩成一个zip文件的函数 * @$files 数组类型 实例array("1.jpg","2.jpg"); * @destination 目标文件的路径 如"c:/androidyue.zip" * @$overwrite 是否为覆盖与目标...
  • Java解压缩zip - 解压缩多个文件或文件夹

    万次阅读 多人点赞 2012-09-19 12:56:50
    Java解压缩zip - 多个文件(包括文件夹) 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压。 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip...
  • 废话不说,直接上代码 //这里需要注意该目录是否存在,并且有创建的权限 $zipname = 'path/test.zip' //这是要打包的文件地址数组 $files = array("mypath/test1.txt","mypath/test2.pdf"); $zip = new Zip...
  • POI导出多个Excel文件,生成压缩文件

    千次阅读 2018-01-15 10:51:38
    当需要导出的sheet数超过255个时,比较好的办法是将多个Excel文件压缩成.zip文件再导出 步骤:1 将需要导出的表封装到listBean中   2 将list中表每隔255个sheet导出到一个Excel文件   3 将Excel文件生成压缩...
  •   程序员在做web等项目的时候,往往都需要添加文件上传、下载、删除的功能,有时是单... 这篇博文主要是讲如何将多个文件压缩并下载下来: 主要有以下几个步骤:1。 首先先遍历出某个文件夹所含有的所有文件im...
  • 哈夫曼实现文件压缩解压缩(c语言)

    万次阅读 多人点赞 2019-01-23 17:04:47
    一个文件进行压缩和解压缩的程序,功能如下: ① 可以对纯英文文档实现压缩和解压; ② 较好的界面程序运行的说明。 介绍哈夫曼: 效率最高的判别树即为哈夫曼树 在计算机数据处理中,霍夫曼编码...
  • 文件下载 //下载单个文件 public void downloadFile(HttpServletResponse response){ String path = "D:\test\ce\1.txt" File file = new File(path); if(file.exists()){ String fil...
  • 在用百度网盘备份资料时由于文件过大而无法上传,因此需要将大文件分卷压缩成多个小文件以便操作使用。 1、选择该“大文件”,右键如下图所示,选择“添加到压缩文件”,此处切勿选择其他菜单,因为我们需要对压缩...
  • java将多个文件(Excel)压缩成zip,并发送给页面 方案 将多个文件夹中的文件,放入一个临时文件夹,并将临时文件夹进行压缩打包,发回给页面。 转移文件类 import java.io.File; import java.io.FileInputStream; ...
  • Java多文件压缩下载解决方案

    万次阅读 2018-09-07 18:00:33
    会员运营平台经过改版后页面增加了许多全部下载链接,上周上线比较仓促,全部下载是一个直接下载ZIP压缩文件的链接,每个ZIP压缩文件都是由公司运营人员将页面需要下载的文件全部压缩成一个ZIP压缩文件,然后通过...
  • 参考:...   Talk is cheap,show me the code! ...同一文件夹下的多个文件夹打成一个zip包 import java.io.BufferedInputSt
  • java对多个文件压缩

    万次阅读 2020-09-03 10:55:46
    * \* Description: * \ */ public class ZipUtils { public static void zipDir(String directoryName, ZipOutputStream zos, String basePath) { /** * 该方法递归实现将多个文件夹压缩在同一个zip包中 然后删除...
  • 使用minizip解压缩多个文件(基于zlib)

    万次阅读 多人点赞 2018-05-17 22:34:38
    写作目的:之前在网上看到很多人在寻找可以解压缩多个文件的程序,其中尝试zlib的,但是却不知道如何实现解压缩多个文件,使用zlib的源码可以生成后缀为点gz的压缩文件,但是次只能压缩个文件,无法压缩多个文件...
  • 使用C#语言进行多个文件压缩打包

    千次阅读 2017-02-16 09:23:00
    这里借助了第三方程序集ICSharpCode,请自行检索下载。下面上码/// /// 制作压缩包(多个文件压缩一个压缩包,支持加密、注释) /// /// 要压缩的文件 /// 压缩文件目录 /// <param n

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 699,517
精华内容 279,806
关键字:

多个文件如何压缩成一个文件