200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java将文件夹压缩成压缩包

java将文件夹压缩成压缩包

时间:2021-02-19 14:21:35

相关推荐

java将文件夹压缩成压缩包

1.代码

将文件夹递归达成压缩包,并且支持删除源文件

public class PackageToZIp {public static boolean toZip(String source, String destination) {try {FileOutputStream out = new FileOutputStream(destination);ZipOutputStream zipOutputStream = new ZipOutputStream(out);File sourceFile = new File(source);// 递归压缩文件夹compress(sourceFile, zipOutputStream, sourceFile.getName());zipOutputStream.flush();zipOutputStream.close();//不删除源文件 就不用调用这个 要删除就调用deleteFile(sourceFile);} catch (IOException e) {System.out.println("failed to zip compress, exception");return false;}return true;}public static Boolean deleteFile(File file) {//判断文件不为null或文件目录存在if (file == null || !file.exists()) {System.out.println("文件删除失败,请检查文件是否存在以及文件路径是否正确");return false;}//获取目录下子文件File[] files = file.listFiles();//遍历该目录下的文件对象for (File f : files) {//判断子目录是否存在子目录,如果是文件则删除if (f.isDirectory()) {//递归删除目录下的文件deleteFile(f);} else {//文件删除f.delete();}}//文件夹删除file.delete();return true;}private static void compress(File sourceFile, ZipOutputStream zos, String name) throws IOException {byte[] buf = new byte[1024];if (sourceFile.isFile()) {// 压缩单个文件,压缩后文件名为当前文件名zos.putNextEntry(new ZipEntry(name));// copy文件到zip输出流中int len;FileInputStream in = new FileInputStream(sourceFile);while ((len = in.read(buf)) != -1) {zos.write(buf, 0, len);}zos.closeEntry();in.close();} else {File[] listFiles = sourceFile.listFiles();if (listFiles == null || listFiles.length == 0) {// 空文件夹的处理(创建一个空ZipEntry)zos.putNextEntry(new ZipEntry(name + "/"));zos.closeEntry();} else {// 递归压缩文件夹下的文件for (File file : listFiles) {compress(file, zos, name + "/" + file.getName());}}}}public static void main(String[] args) {PackageToZIp.toZip("d:\\Users\\chenkj\\Desktop\\target", "d:\\Users\\chenkj\\Desktop\\demo.zip");}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。