java把文件压缩成zip文件

public String zip(String fileName) {

        String zipName=UUID.randomUUID().toString();//压缩以后的文件名
        String zipPath = "/mnt/fileserver"; //压缩以后文件的存放路径
        String sourcePath="/mnt/fileserver/upload";//要压缩的文件的路径
        File sourceFile = new File(sourcePath);  
        FileInputStream fis = null;  
        BufferedInputStream bis = null;  
        FileOutputStream fos = null;  
        ZipOutputStream zos = null;  
 
        if (sourceFile.exists() == false) {  
            System.out.println("File catalog:" + sourcePath + "not exist!");  
        } else {  
            try {  
                if(!new File(zipPath).exists()){  
                    new File(zipPath).mkdirs();  
                }  
                File zipFile = new File(zipPath + "/" + zipName + ".zip");  
                System.out.println(zipFile);
                if (zipFile.exists()) {  
                    System.out.println(zipPath + "Catalog File: " + zipName + ".zip" + "pack file.");  
                } else {  
                    File[] sourceFiles = sourceFile.listFiles();  
                    if (null == sourceFiles || sourceFiles.length < 1) {  
                        System.out.println("File Catalog:" + sourcePath + "nothing in there,don't hava to compress!");  
                    } else {  
                        fos = new FileOutputStream(zipFile);  
                        zos = new ZipOutputStream(new BufferedOutputStream(fos));  
                        byte[] bufs = new byte[1024 * 10];  
                        for (int i = 0; i < sourceFiles.length; i++) {
                            if(sourceFiles[i].getName().equals(fileName)){                               
                                // create .zip and put pictures in  
                                ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());  
                                zos.putNextEntry(zipEntry);  
                                // read documents and put them in the zip  
                                fis = new FileInputStream(sourceFiles[i]);  
                                bis = new BufferedInputStream(fis, 1024 * 10);  
                                int read = 0;  
                                while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {  
                                    zos.write(bufs, 0, read);  
                                }  
                            }
                        }   
                    }  
                }  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
                throw new RuntimeException(e);  
            } catch (IOException e) {  
                e.printStackTrace();  
                throw new RuntimeException(e);  
            } finally {  
                try {  
                    if (null != bis)  
                        bis.close();  
                    if (null != zos)  
                        zos.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                    throw new RuntimeException(e);  
                }  
            }  
        }  
        return zipName;  
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值