java 解压文件

2021/9/22 22:41:00

本文主要是介绍java 解压文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

java 解压文件

//要压缩的文件
String zipName = "D:\\file\\test.zip";
//压缩到的目录
String targetDirName = "D:\\upZip"
/**
     * @Description: 将指定的zip文件解压到指定目录下,其中:zipName:文件名,targetDirName:需解压到的目录
     **/
    public static File upzipFile(String zipName, String targetDirName) throws Exception {

        if (!targetDirName.endsWith(File.separator)) {
            targetDirName += File.separator;
        }
		//防止乱码,获得压缩的格式
        String fileEncode = EncodeUtil.getEncode(zipName, true);

        try {
            // 根据zip文件创建ZipFile对象,此类的作用是从zip文件读取条目
            ZipFile zipFile = new ZipFile(zipName, Charset.forName(fileEncode));
            ZipEntry zn = null;
            String entryName = null;
            String targetFileName = null;
            byte[] buffer = new byte[4096];
            int bytes_read;
            Enumeration entrys = zipFile.entries();            // 获取ZIP文件里所有的文件条目的名字
            File targetFile = null;
            FileOutputStream os = null;
            InputStream is = null;
            //entrys.hasMoreElements();
            while (entrys.hasMoreElements()) {                // 循环遍历所有的文件条目的名字
                zn = (ZipEntry) entrys.nextElement();
                System.out.println("zn:" + zn);
                entryName = zn.getName();                // 获得每一条文件的名字
                System.out.println("entryName:" + entryName);
                targetFileName = targetDirName + entryName;
                if (zn.isDirectory()) {
                    new File(targetFileName).mkdirs();        // 如果zn是一个目录,则创建目录
                    continue;
                } else {
                    new File(targetFileName).getParentFile().mkdirs();// 如果zn是文件,则创建父目录
                }
                targetFile = new File(targetFileName);    // 否则创建文件
                System.out.println("正在创建文件:" + targetFile.getAbsolutePath());
                os = new FileOutputStream(targetFile);// 打开文件输出流
                is = zipFile.getInputStream(zn);    // 从ZipFile对象中打开entry的输入流
                while ((bytes_read = is.read(buffer)) != -1) {
                    os.write(buffer, 0, bytes_read);
                }
            }
            os.close();                                // 关闭流
            is.close();
            zipFile.close();
            System.out.println("解压缩" + zipName + "成功!");
            return targetFile;
        } catch (IOException err) {
            System.err.println("解压缩" + zipName + "失败: " + err);
        }
        return null;
    }


这篇关于java 解压文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程