java快速压缩文件夹_如何使用java压缩文件夹本身

它可以通过包java.util.Zip轻松解决,不需要任何额外的Jar文件

只需复制以下代码并使用IDE运行它

//Import all needed packages

package general;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

public class ZipUtils {

private List fileList;

private static final String OUTPUT_ZIP_FILE = "Folder.zip";

private static final String SOURCE_FOLDER = "D:\\Reports"; // SourceFolder path

public ZipUtils() {

fileList = new ArrayList < String > ();

}

public static void main(String[] args) {

ZipUtils appZip = new ZipUtils();

appZip.generateFileList(new File(SOURCE_FOLDER));

appZip.zipIt(OUTPUT_ZIP_FILE);

}

public void zipIt(String zipFile) {

byte[] buffer = new byte[1024];

String source = new File(SOURCE_FOLDER).getName();

FileOutputStream fos = null;

ZipOutputStream zos = null;

try {

fos = new FileOutputStream(zipFile);

zos = new ZipOutputStream(fos);

System.out.println("Output to Zip : " + zipFile);

FileInputStream in = null;

for (String file: this.fileList) {

System.out.println("File Added : " + file);

ZipEntry ze = new ZipEntry(source + File.separator + file);

zos.putNextEntry(ze);

try {

in = new FileInputStream(SOURCE_FOLDER + File.separator + file);

int len;

while ((len = in .read(buffer)) > 0) {

zos.write(buffer, 0, len);

}

} finally {

in.close();

}

}

zos.closeEntry();

System.out.println("Folder successfully compressed");

} catch (IOException ex) {

ex.printStackTrace();

} finally {

try {

zos.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

public void generateFileList(File node) {

// add file only

if (node.isFile()) {

fileList.add(generateZipEntry(node.toString()));

}

if (node.isDirectory()) {

String[] subNote = node.list();

for (String filename: subNote) {

generateFileList(new File(node, filename));

}

}

}

private String generateZipEntry(String file) {

return file.substring(SOURCE_FOLDER.length() + 1, file.length());

}

}

参考mkyong ..我改变了当前问题要求的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值