Java 文件转Zip实现

来源:互联网 发布:古代衣服淘宝 编辑:程序博客网 时间:2024/05/22 12:33

记录下文件转zip的实现:

/** * 文件转zip * @param sourceFilePath * @param zipFilePath * @param fileName * @return */public static boolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) {boolean flag = false;File sourceFile = new File(sourceFilePath);BufferedInputStream bis = null;FileOutputStream fos = null;ZipOutputStream zos = null;if (sourceFile.exists() == false) {System.out.println("待压缩的文件不存在.");} else {try {File zipFile = new File(zipFilePath + "\\" + fileName +".zip");  File[] sourceFiles = sourceFile.listFiles();if (null == sourceFiles || sourceFiles.length < 1) {System.out.println("待压缩的文件目录里面不存在文件,无需压缩.");} else {fos = new FileOutputStream(zipFile);zos = new ZipOutputStream(new BufferedOutputStream(fos));for (int i = 0; i < sourceFiles.length; i++) {writeZip(sourceFiles[i], zipFilePath, zos, zipFilePath);}flag = true;}} catch (FileNotFoundException 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 flag;}/** * zip写入逻辑 * @param file * @param parentPath * @param zos * @param firstParentName */private static void writeZip(File file, String parentPath, ZipOutputStream zos, String firstParentName) {        if(file.exists()){            if(file.isDirectory()){//处理文件夹                parentPath+=file.getName()+File.separator;                File [] files=file.listFiles();                for(File f:files){                    writeZip(f, parentPath, zos, firstParentName);                }            }else{                FileInputStream fis=null;                try {                    fis=new FileInputStream(file);                    ZipEntry ze = new ZipEntry(parentPath.replace(firstParentName, "") + file.getName());                    zos.putNextEntry(ze);                    byte [] content=new byte[1024];                    int len;                    while((len=fis.read(content))!=-1){                        zos.write(content,0,len);                        zos.flush();                    }                } catch (FileNotFoundException e) {                System.out.println("创建ZIP文件失败");                } catch (IOException e) {                System.out.println("创建ZIP文件失败");                }finally{                    try {                        if(fis!=null){                            fis.close();                        }                    }catch(IOException e){                    System.out.println("创建ZIP文件失败");                    }                }            }        }    }  

调用 fileToZip 这个方法即可。

1 0
原创粉丝点击