最代码广告位
chen888的gravatar头像
chen8882017-08-04 11:35:05

java压缩和解压指定文件夹下的文件实例

需求:

   现在有这样一个需求,有一个chen文件夹,下面有A/B两个文件夹,里面有分别有a1.jpg/a2.jpg和b1.jpg/b2.jpg四个图片,现在我想取出a1.jpg和b1.jpg,然后还按照这个结构打成一个zip包.

Java主要代码:

/**
     * 压缩文件或路径
     * 
     * @param zip
     *            压缩的目的地址
     * @param srcFiles
     *            压缩的源文件
     */
    public static void zipFile(String zip, List<File> srcFiles) {
        try {
            if (zip.endsWith(".zip") || zip.endsWith(".ZIP")) {
                ZipOutputStream _zipOut = new ZipOutputStream(
                        new FileOutputStream(new File(zip)));
                for (File _f : srcFiles) {
                    //选择指定压缩文件
                    if(_f.getName().equals("a1.jpg") || _f.getName().equals("b1.jpg"))
                        handlerFile(zip, _zipOut, _f, "");
                }
                _zipOut.close();
            } else {
                System.out.println("target file[" + zip+ "] is not .zip type file");
            }
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
        }
    }

    /**
     * 
     * @param zip
     *            压缩的目的地址
     * @param zipOut
     * @param srcFile
     *            被压缩的文件信息
     * @param path
     *            在zip中的相对路径
     * @throws IOException
     */
    private static void handlerFile(String zip, ZipOutputStream zipOut,
            File srcFile, String path) throws IOException {
        System.out.println(" begin to compression file[" + srcFile.getName()
                + "]");
        if (!"".equals(path) && !path.endsWith(File.separator)) {
            path += File.separator;
        }
        if (!srcFile.getPath().equals(zip)) {
            if (srcFile.isDirectory()) {
                File[] _files = srcFile.listFiles();
                if (_files.length == 0) {
                    zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()
                            + File.separator));
                    zipOut.closeEntry();
                } else {
                    for (File _f : _files) {
                        handlerFile(zip, zipOut, _f, path + srcFile.getName());
                    }
                }
            } else {
                InputStream _in = new FileInputStream(srcFile);
                zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()));
                int len = 0;
                byte[] _byte = new byte[1024];
                while ((len = _in.read(_byte)) > 0) {
                    zipOut.write(_byte, 0, len);
                }
                _in.close();
                zipOut.closeEntry();
            }
        }
    }

 

压缩目录或文件夹:看具体项目代码,主要是自己记录一下这种需求的代码,方便以后自己遇到这种需求,不要重新写,大家有好的方法可以交流呢!!

实现效果图:

 

java压缩和解压指定文件夹下的文件实例


打赏

文件名:com.zip.zip,文件大小:19.817K下载
最代码最近下载分享源代码列表最近下载
dybtom LV92019年6月28日
月亮月亮星星
武静123 LV12019年5月28日
星星
18170035580 LV142018年11月3日
月亮月亮月亮星星星星
FunnyKing LV192017年8月7日
太阳星星星星星星
最代码官方 LV1512017年8月4日
皇冠皇冠太阳月亮星星星星星星
最代码最近浏览分享源代码列表最近浏览
a33186572325月26日
暂无贡献等级
3242592726 LV11月9日
星星
G你太美 LV82019年12月30日
月亮月亮
随便取个名字_哈哈 LV182019年11月16日
太阳星星星星
xieliwen2019年9月11日
暂无贡献等级
紫玉天辰 LV102019年9月3日
月亮月亮星星星星
飞奔45 LV52019年7月8日
月亮星星
武静123 LV12019年5月28日
星星
小灰灰520 LV52019年5月28日
月亮星星
安安an LV172019年5月9日
太阳星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友