Java之解压流(ZipInputStream)

简介:   一、ZipInputStream相对于ZipOutputStream而言,使用上面简单的多了,相对的,既然存在压缩流,就会存在,解压的方式。  二、解压文件,流的使用过程中也是很常用的,在读取文件,根据文件类型进行处理,这样,就可以做到,最低成本的数据传输了  三、解压例子/** ...

  一、ZipInputStream相对于ZipOutputStream而言,使用上面简单的多了,相对的,既然存在压缩流,就会存在,解压的方式。

  二、解压文件,流的使用过程中也是很常用的,在读取文件,根据文件类型进行处理,这样,就可以做到,最低成本的数据传输了

  三、解压例子

/**
     * 提供给用户使用的解压工具
     * @param srcPath
     * @param outPath
     * @throws IOException
     */
    public static void decompressionFile(String srcPath, String outPath) throws IOException {
        //简单判断解压路径是否合法
        if (!new File(srcPath).isDirectory()) {
            //判断输出路径是否合法
            if (new File(outPath).isDirectory()) {
                if (!outPath.endsWith(File.separator)) {
                    outPath += File.separator;
                }
                //zip读取压缩文件
                FileInputStream fileInputStream = new FileInputStream(srcPath);
                ZipInputStream zipInputStream = new ZipInputStream(fileInputStream);
                //解压文件
                decompressionFile(outPath, zipInputStream);
                //关闭流
                zipInputStream.close();
                fileInputStream.close();
            } else {
                throw new RuntimeException("输出路径不合法!");
            }
        } else {
            throw new RuntimeException("需要解压的文件不合法!");
        }
    }

    /**
     * ZipInputStream是逐个目录进行读取,所以只需要循环
     * @param outPath
     * @param inputStream
     * @throws IOException
     */
    private static void decompressionFile(String outPath, ZipInputStream inputStream) throws IOException {
        //读取一个目录
        ZipEntry nextEntry = inputStream.getNextEntry();
        //不为空进入循环
        while (nextEntry != null) {
            String name = nextEntry.getName();
            File file = new File(outPath+name);
            //如果是目录,创建目录
            if (name.endsWith("/")) {
                file.mkdir();
            } else {
                //文件则写入具体的路径中
                FileOutputStream fileOutputStream = new FileOutputStream(file);
                BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
                int n;
                byte[] bytes = new byte[1024];
                while ((n = inputStream.read(bytes)) != -1) {
                    bufferedOutputStream.write(bytes, 0, n);
                }
                //关闭流
                bufferedOutputStream.close();
                fileOutputStream.close();
            }
            //关闭当前布姆
            inputStream.closeEntry();
            //读取下一个目录,作为循环条件
            nextEntry = inputStream.getNextEntry();
        }
    }

  四、测试:

public static void main(String[] args) throws IOException {
        decompressionFile("D:\\srv.zip", "D:\\test");
}

 

相关文章
|
4月前
|
Java 关系型数据库 Linux
Linux|Java|jar包的解压和重新打包(更新配置)
Linux|Java|jar包的解压和重新打包(更新配置)
67 0
|
5月前
|
Java
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
49 0
|
存储 算法 Java
Java解压本地zip文件(zip4j)
Java解压本地zip文件(zip4j)
Java解压本地zip文件(zip4j)
|
算法 安全 Java
java对zip、rar、7z文件带密码解压实例
本文采用java语言实现了对zip和rar、7z文件的解压统一算法。并对比了相应的解压速度,支持传入密码进行在线解压。
1232 0
java对zip、rar、7z文件带密码解压实例
|
网络协议 安全 Java
Java通过OpenSSH上传文件到远程Windows服务器,并远程解压zip包
Java通过OpenSSH上传文件到远程Windows服务器,并远程解压zip包
1120 0
Java通过OpenSSH上传文件到远程Windows服务器,并远程解压zip包
|
11月前
|
Java
java 实现zip 压缩 解压 (目录控制)
java 实现zip 压缩 解压 (目录控制)
264 0
|
Java
Java解压zip到指定文件夹
Java解压zip到指定文件夹
350 0
Java解压zip到指定文件夹
|
Java 开发者
Java操作文件的日常总结(文件压缩,文件解压,递归删除文件,文件的下载保存)
文件的读写是日常开发中经常碰到的需求,熟练掌握文件的读写是每个Java开发者的基本功。本文将主要介绍常见的文件读写操作。 之前写过一篇Java IO的文章 Java IO基础(同步阻塞IO)。
243 0
|
Java
JAVA解压Zip格式文件的代码
JAVA解压Zip格式文件的代码
99 0
|
Java Apache
JAVA压缩、解压,使用Apache Common Compress包下载链接
JAVA压缩、解压,使用Apache Common Compress包下载链接
171 0