Java的文件解压-Zip格式

红烧土豆泥
• 阅读 1520
  /**
 * 作者认为解压缩最安全的方法
 * 先创建所有的文件夹
 * 之后创建再文件
 * <p>
 * 原因:未处理好当压缩文件夹下第一个是一个文件夹,考虑到存在有文件可以没有(.)等这些标识符,无法识别出是否是文件夹还是文件,
 * 故根据zipEntry.getName后续返回值是否存在后续文件夹即(\\符号)判断是否其是文件夹,进而可以创建出压缩包下所有的文件夹
 * 当所有的文件夹创建好之后,压缩文件与现有的文件目录的唯一区别就是文件
 * 此时,可以直接对压缩文件目录与现解压文件目录进行比较,如果不存在则进行copy,如果存在,则不处理
 * 如果有发现更好的处理方式,将继续更改
 */
public class ZipFileDemo {
    public static void main(String[] args) {
        createFolder("E:\\HUAT2.zip","E:\\aaa");
    }

    public static void createFolder(String filePath, String savePath) {
        ZipInputStream inputStream = null;
        ZipEntry zipEntry = null;
        try {
            inputStream = new ZipInputStream(new FileInputStream(filePath));
            while ((zipEntry = inputStream.getNextEntry()) != null) {
                String fileName = zipEntry.getName();
                File file = new File(savePath + File.separator + fileName);
                if (!file.getParentFile().exists()) {
                    file.getParentFile().mkdirs();
                }
            }
            createFile(filePath, savePath);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static void createFile(String filePath, String savePath) {
        ZipInputStream inputStream = null;
        ZipEntry zipEntry = null;
        OutputStream outputStream = null;
        try {
            inputStream = new ZipInputStream(new FileInputStream(filePath));
            while ((zipEntry = inputStream.getNextEntry()) != null) {
                String fileName = zipEntry.getName();
                System.out.println(fileName);
                File file = new File(savePath + File.separator + fileName);

                if (!file.exists()) {
                    outputStream = new FileOutputStream(file, true);
                    int len = 0;
                    byte[] bytes = new byte[1024];
                    while ((len = inputStream.read(bytes)) != -1) {
                        outputStream.write(bytes, 0, len);
                    }
                    outputStream.close();
                }
            }
            inputStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
点赞
收藏
评论区
推荐文章
Jacquelyn38 Jacquelyn38
3年前
Js可以写桌面应用端?
1、下载nw.jshttps://nwjs.io/最好下载sdk版本。2、解压打开安装包下载完之后,解压打开图中的「app文件夹」是我自己创建的,你也需要自己创建一个,里面放你项目文件。「app文件夹」中一般放一个index.html(页面展示),另外还需要创建一个package.json文件(参数配置):        "name":  "first 
Jacquelyn38 Jacquelyn38
3年前
牛逼!五分钟开发一款桌面版应用
1、下载nw.jshttps://nwjs.io/最好下载sdk版本。2、解压打开安装包下载完之后,解压打开图中的app文件夹是我自己创建的,你也需要自己创建一个,里面放你项目文件。app文件夹中一般放一个index.html(页面展示),另外还需要创建一个package.json文件(参数配置):        "name":  "first  ap
陈占占 陈占占
2年前
Python爬虫-爬取小说-下载小说
一、创建文件夹(1)、创建指定文件夹判断文件夹是否存在,不存在则创建defJudgefolder():folder"novel"ifnotos.path.exists(folder):print("文件不存在,已创建!")os.mkdir(folder)else:prin
Wesley13 Wesley13
3年前
Java 解压zip压缩包
因为最近项目需要批量上传文件,而这里的批量就是将文件压缩在了一个zip包里,然后读取文件进行解析文件里的内容。因此需要先对上传的zip包进行解压。以下直接提供代码供参考:1.第一个方法是用于解压zip压缩包的方法。2.第二个方法是 删除该文件夹以及子目录和子目录文件的方法。3.第三个方法是删除 删除文件夹内所有文件和子目录的方法。因为
Stella981 Stella981
3年前
Dictionary类 操作文件夹
创建一个控制台应用程序,复制此代码,取消相关所需要的注释即可运行Directory操作文件夹CreateDirectory创建文件夹Delete 删除文件夹Move 剪切文件夹Exist 判断是否存在GetFiles获得指定的目录下所有文件的全路径GetDirectory获得指定目录下所有文件夹的全路径
Wesley13 Wesley13
3年前
C#解压或压缩文件夹
C解压或压缩文件夹最近要做一个项目涉及到C中压缩与解压缩的问题的解决方法,大家分享。这里主要解决文件夹包含文件夹的解压缩问题。1)下载SharpZipLib.dll,在http://www.icsharpcode.net/OpenSource/SharpZipLib/Download.aspx中有最新免费版本,“Assemblies(https
Stella981 Stella981
3年前
CentOS6.5 安装 MongoDB3.2
选择版本下载https://fastdl.mongodb.org/linux/mongodblinuxx86_64rhel623.2.1.tgz解压缩tar zxvf mongodblinuxx86_64rhel623.2.1.tgz创建data文件夹和logs文件夹mkdir /java/mon
Wesley13 Wesley13
3年前
JAVA 实现将多目录多层级文件打成ZIP包后保留层级目录下载 ZIP压缩 下载
将文件夹保留目录打包为ZIP压缩包并下载上周做了一个需求,要求将数据库保存的html界面取出后将服务器下的css和js文件一起打包压缩为ZIP文件,返回给前台;在数据库中保存的是html标签,查出后,我把这些内容写入css和js等其他文件所在目录的一个文件内,然后将这整个文件夹压缩打包下载,
Stella981 Stella981
3年前
File的几个常用方法
1.FilefilenewFile(Stringpath);只是创建文件对象2.file.exists();文件是否存在3.file.isDirectory();判断文件对象是否是文件夹4.String\\listfile.list();返回文件列表,文件夹名字或者文件名(包括后缀名)5.File.sep
子桓 子桓
1年前
高质量压缩 Keka for Mac中文最新介绍
Keka是一款简单易用的Mac平台上的压缩解压缩工具。它支持多种压缩格式,包括常见的ZIP、RAR、7ZIP、TAR等,可以快速、高效地压缩和解压缩各种文件和文件夹。以下是关于Keka软件的一些详细介绍:支持多种压缩格式。Keka支持多种常用压缩格式,包括