读取目录下的文件将文件压缩

/*
 * 将下载下来的文件打成压缩包
 * documentPath    原文件目录
 * resultPath   结果文件名
 */
 public String compression(String documentPath,String resultPath){
        OutputStream outStream;
    ZipOutputStream zos = null;
    File file = new File(documentPath);
    try {
        outStream = new FileOutputStream(resultPath);
        zos = new ZipOutputStream(outStream);// 将输入流获取的信息存储到zip的输出流里面

        //读取目录中的所有文件
        String[] list = file.list();

        String[] filenames = new String[list.length];
        for (int i = 0; i < list.length; i++) {
            if ("".equals(list[i]))
                continue;
            filenames[i] = resultPath + list[i];
        }
        // 定义 数组大小
        // int bufferSize = 1024 * 10 * 10;
        byte[] b = new byte[102400];
        int len = 0;
        for (int i = 0; i < filenames.length; i++) {
            File tFile = new File(filenames[i]);
            if (!tFile.exists())
                continue;
            String shortName = tFile.getName();
            zos.putNextEntry(new ZipEntry(shortName));
            FileInputStream inStream = new FileInputStream(filenames[i]);
            BufferedInputStream BuffedInStream = new BufferedInputStream(inStream);

            while ((len = BuffedInStream.read(b)) != -1) {
                zos.write(b, 0, len);
            }
            zos.flush();
            inStream.close();
            BuffedInStream.close();
        }
        deleteCatalogAndFiles(documentPath);//删除目录
    }catch(Exception e) {
        logger.error("压缩文件时出错", e);
    }finally {
        try {
            zos.close();
        } catch (IOException e) {
            logger.error("关闭流出错", e);
        }
    }
    return resultPath;
}
/*
 * 删除文件目录下的文件及目录
 */
public void deleteCatalogAndFiles(String documentPath){
    File file = new File(documentPath);
    if (file.isDirectory()){
        String[] children = file.list();//文件夹目录列表
        for (String child : children)
        {
            deleteCatalogAndFiles(documentPath+ "//" + child);
        }
    }
    file.delete();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值