package com.spider.reader.common.tool; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream; import com.spider.reader.common.util.StringUtils; public class ZipUtil { /** 得到当前系统的分隔符 */ // private static String separator = System.getProperty("file.separator"); /** * 添加到压缩文件中 * * @param out * @param f * @param base * @throws Exception */ private static void directoryZip(ZipOutputStream out, File f, String base) throws Exception { // 如果传入的是目录 if (f.isDirectory()) { File[] fl = f.listFiles(); // 创建压缩的子目录 out.putNextEntry(new ZipEntry(base + "/")); if (base.length() == 0) { base = ""; } else { base = base + "/"; } for (int i = 0; i < fl.length; i++) { directoryZip(out, fl[i], base + fl[i].getName()); } } else { // 把压缩文件加入rar中 out.putNextEntry(new ZipEntry(base)); FileInputStream in = new FileInputStream(f); byte[] bb = new byte[10240]; int aa = 0; while ((aa = in.read(bb)) != -1) { out.write(bb, 0, aa); } in.close(); } } /** * 压缩文件 * * @param zos * @param file * @throws Exception */ private static void fileZip(ZipOutputStream zos, File file) throws Exception { if (file.isFile()) { zos.putNextEntry(new ZipEntry(file.getName())); FileInputStream fis = new FileInputStream(file); byte[] bb = new byte[10240]; int aa = 0; while ((aa = fis.read(bb)) != -1) { zos.write(bb, 0, aa); } fis.close(); } else { directoryZip(zos, file, ""); } } /** * 解压缩文件 * * @param zis * @param file * @throws Exception */ // private void fileUnZip(ZipInputStream zis, File file) throws Exception { // ZipEntry zip = zis.getNextEntry(); // if (zip == null) // return; // String name = zip.getName(); // File f = new File(file.getAbsolutePath() + "/" + name); // if (zip.isDirectory()) { // f.mkdirs(); // fileUnZip(zis, file); // } else { // f.createNewFile(); // FileOutputStream fos = new FileOutputStream(f); // byte b[] = new byte[10240]; // int aa = 0; // while ((aa = zis.read(b)) != -1) { // fos.write(b, 0, aa); // } // fos.close(); // fileUnZip(zis, file); // } // } private void fileUnZip(ZipFile zipFile, File file) throws Exception { Enumeration<?> enums = zipFile.getEntries(); while(enums.hasMoreElements()){ ZipEntry zip = (ZipEntry) enums.nextElement(); if (zip == null) return; String name = zip.getName(); File f = new File(file.getAbsolutePath() + "/" + name); if (zip.isDirectory()) { f.mkdirs(); } else { f.createNewFile(); InputStream is = null; OutputStream os = null; try { is = zipFile.getInputStream(zip); os = new FileOutputStream(f); byte b[] = new byte[10240]; int aa = 0; while ((aa = is.read(b)) != -1) { os.write(b, 0, aa); } os.close(); } catch (IOException e) { throw e; }finally{ if(is!=null) is.close(); if(os!=null) os.close(); } } } } /** * 根据filePath创建相应的目录 * * @param filePath * @return * @throws IOException */ private static File mkdirFiles(String filePath) throws IOException { File file = new File(filePath); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } file.createNewFile(); return file; } /** * 对zipBeforeFile目录下的文件压缩,保存为指定的文件zipAfterFile * * @param zipBeforeFile * 压缩之前的文件 * @param zipAfterFile * 压缩之后的文件 */ public static void zip(String mkdirName, String fileName) { try { ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(mkdirFiles(fileName))); fileZip(zos, new File(mkdirName)); /** 设置编码方式,避免中文的文件名显示成乱码* */ zos.setEncoding("gbk"); zos.close(); } catch (Exception e) { e.printStackTrace(); } } /** * 解压缩文件unZipBeforeFile保存在unZipAfterFile目录下 * * @param unZipBeforeFile 解压之前的文件 * @param unZipAfterFile 解压之后的文件 */ // public void unZip(String unZipBeforeFile, String unZipAfterFile) { // try { // ZipInputStream zis = new ZipInputStream(new FileInputStream(unZipBeforeFile)); // File f = new File(unZipAfterFile); // f.mkdirs(); // fileUnZip(zis, f); // zis.close(); // } catch (Exception e) { // e.printStackTrace(); // } // } public void unZip(String unZipBeforeFile, String unZipAfterFile) { try { ZipFile zipFile = null; try { zipFile = new ZipFile(unZipBeforeFile); File f = new File(unZipAfterFile); f.mkdirs(); fileUnZip(zipFile, f); } catch (IOException e) { throw new IOException("解压缩文件出现异常"); }finally{ try{ if(zipFile != null){ zipFile.close(); } }catch(IOException ex){ throw new IOException("关闭zipFile出现异常"); } } } catch (Exception e) { e.printStackTrace(); } } public static void copy(String path1, String path2) throws IOException { DataInputStream in = new DataInputStream(new BufferedInputStream(new FileInputStream(path1))); byte[] date = new byte[in.available()]; in.read(date); DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(path2))); out.write(date); in.close(); out.close(); } /** * 拷贝图片 新图片以流的形式存储 * @param path1 * @param path2 * @throws IOException */ public static void copyStream(String path1, String path2) throws IOException{ if(StringUtils.isNotEmpty(path2) && path2.contains(".")){ path2 = path2.substring(0, path2.lastIndexOf(".")); File fileNew = new File(path1); File fileOld = new File(path2); InputStream input = null; FileOutputStream output = null; try{ input = new FileInputStream(fileNew); output = new FileOutputStream(fileOld); FileInputStream in = new FileInputStream(path1); byte[] b = new byte[in.available()]; int read; while ((read = input.read(b)) != -1) { output.write(b, 0, read); } }finally{ if(null != input){ input.close(); } if(null != output){ output.close(); } } } } /** * 拷贝图片 新图片以流的形式存储 * @param path1 * @param path2 * @throws IOException */ public static void copyStreamTwo(String path1, String path2) { File fileNew = new File(path1); File fileOld = new File(path2); InputStream input = null; FileOutputStream output = null; try{ input = new FileInputStream(fileNew); output = new FileOutputStream(fileOld); FileInputStream in = new FileInputStream(path1); byte[] b = new byte[in.available()]; int read; while ((read = input.read(b)) != -1) { output.write(b, 0, read); } }catch(Exception e){ e.printStackTrace(); }finally{ try{ if(null != input){ input.close(); } if(null != output){ output.close(); } }catch(Exception e){ e.printStackTrace(); } } } }
相关推荐
在PHP中生成ZIP压缩文件是一项常见的任务,尤其是在网站开发中,我们可能需要将多个文件打包成一个可下载的压缩文件,以方便用户批量获取或传输数据。本篇将详细讲解如何利用PHP的ZipArchive类来实现这一功能。 ...
标题 "jquery打包,生成并下载zip文件" 描述了一个使用jQuery技术在前端将图片文件打包成ZIP文件并供用户下载的场景。这个过程无需后端服务器的介入,从而减轻了服务器的压力并提高了用户体验。让我们详细了解一下这...
压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者""....
综上所述,"生成excel并打包成zip文件"这个任务涉及到使用Java编程语言,特别是Apache POI库来生成Excel文件,再结合Java标准库的压缩功能将Excel和文本文件打包成ZIP。整个过程涉及到了文件的创建、写入、压缩和...
分步生成csv,获取数据第一行生成文件标题,同时生成第一行数据,返回标题名称。 将多csv文件压缩成zip,之后删除原csv文件
这个库简化了在Java中处理压缩文件的过程,提供了丰富的API供开发者使用。 首先,我们来看`FileUtils.java`中的主要方法。通常,这个类会包含两个核心功能:`zipFiles()`用于创建ZIP包,`unzipFile()`用于解压ZIP包...
首先,Java标准库提供了`java.util.zip`包,该包包含了处理压缩文件格式(如ZIP和GZ)所需的所有类。在创建ZIP文件时,我们主要会用到`ZipOutputStream`和`FileInputStream`这两个类。`ZipOutputStream`用于写入ZIP...
最后,`生成zip包代码.txt`和`解压缩zip包.txt`文件可能包含了具体的实现代码,而`需要用的jar包`可能是指在某些情况下,如使用第三方库时,可能需要引入额外的依赖项。例如,如果使用了Apache Commons Compress库,...
在PHP中生成ZIP文件是一项常见的任务,特别是在处理网站文件打包、数据备份或文件分发时。`PHPZip`是一个PHP类,它提供了方便的方法来创建和管理ZIP档案。以下是对这个话题的详细解释: 首先,我们需要理解`PHPZip`...
- 在Python中,可以使用`pandas`库来处理Excel数据,`os`库进行文件操作,`zipfile`库则用于压缩文件。通过编写脚本,可以自动化完成数据导出和压缩过程。 - 示例代码: ```python import pandas as pd import ...
Java后台批量下载文件并压缩成zip下载的方法 Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考...
这个“asp文件打包成zip组件”可能是一个自定义的ASP组件或者类库,它允许开发者在ASP应用程序中实现文件压缩的功能。 首先,让我们了解一下ZIP文件格式。ZIP是一种广泛使用的档案格式,可以将多个文件和目录压缩到...
在PHP编程中,生成压缩文件是一项常见的任务,特别是在网站数据备份、文件分发或用户下载场景下。"PHP生成压缩文,不带要压缩文件的根目录"这个话题,主要涉及的是如何使用PHP的ZipArchive类来创建一个ZIP文件,但不...
前段时间由于项目需要,使用java生成PDF文件,然后将文件压缩成ZIP格式,同时对压缩文件进行加密,先将代码及jar包上传供大家参考,并希望大家共同完善和学习。 java生成PDF,java加密压缩文件并,java生成PDF后压缩...
如果`unzip`不支持,可以尝试在Linux系统中安装其他工具,比如`p7zip`,它是一个兼容7-Zip格式的命令行工具,通常能处理更多类型的压缩文件。 5. **手动转换**: 对于已有的ZIP文件,你可以在Linux下先用`file`...
在Java编程中,有时我们需要从网络上下载多个文件并将其打包为一个压缩文件,例如ZIP格式,以便于存储或分发。这个过程涉及到文件I/O操作、网络请求以及压缩算法的使用。以下是对这个场景的详细说明: 1. **网络...
在IT领域,尤其是在软件开发中,压缩和解压缩文件是一项常见的任务。`C++`作为一门强大且广泛应用的编程语言,提供了多种库来处理这样的需求。`Zlib`库就是一个非常著名的开源库,专用于数据压缩和解压缩,广泛应用...
在.NET Framework中,`System.IO.Compression`命名空间提供了一系列的类用于处理压缩文件,如`ZipArchive`。我们可以利用`ZipArchive`创建一个新的ZIP文件,并将XML数据写入到其中的一个ZIP条目(ZipArchiveEntry)...
在Java编程环境中,生成压缩文件,如`.jar`或`.zip`,是常见的需求,尤其在打包和分发应用程序时。下面将详细讲解如何使用Java来创建`.jar`和`.zip`格式的压缩文件。 首先,`.jar`文件是Java档案(Java Archive)...
在PHP中生成zip压缩文件是Web开发中常用的功能,它能够帮助开发者打包文件或者文件夹并提供给用户下载,极大地提高了数据传输的效率。接下来,我们将详细探讨PHP生成zip压缩文件的方法。 首先,我们需要了解在PHP中...