java压缩和解压指定文件夹下的文件实例
需求:
现在有这样一个需求,有一个chen文件夹,下面有A/B两个文件夹,里面有分别有a1.jpg/a2.jpg和b1.jpg/b2.jpg四个图片,现在我想取出a1.jpg和b1.jpg,然后还按照这个结构打成一个zip包.
Java主要代码:
/**
* 压缩文件或路径
*
* @param zip
* 压缩的目的地址
* @param srcFiles
* 压缩的源文件
*/
public static void zipFile(String zip, List<File> srcFiles) {
try {
if (zip.endsWith(".zip") || zip.endsWith(".ZIP")) {
ZipOutputStream _zipOut = new ZipOutputStream(
new FileOutputStream(new File(zip)));
for (File _f : srcFiles) {
//选择指定压缩文件
if(_f.getName().equals("a1.jpg") || _f.getName().equals("b1.jpg"))
handlerFile(zip, _zipOut, _f, "");
}
_zipOut.close();
} else {
System.out.println("target file[" + zip+ "] is not .zip type file");
}
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
/**
*
* @param zip
* 压缩的目的地址
* @param zipOut
* @param srcFile
* 被压缩的文件信息
* @param path
* 在zip中的相对路径
* @throws IOException
*/
private static void handlerFile(String zip, ZipOutputStream zipOut,
File srcFile, String path) throws IOException {
System.out.println(" begin to compression file[" + srcFile.getName()
+ "]");
if (!"".equals(path) && !path.endsWith(File.separator)) {
path += File.separator;
}
if (!srcFile.getPath().equals(zip)) {
if (srcFile.isDirectory()) {
File[] _files = srcFile.listFiles();
if (_files.length == 0) {
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()
+ File.separator));
zipOut.closeEntry();
} else {
for (File _f : _files) {
handlerFile(zip, zipOut, _f, path + srcFile.getName());
}
}
} else {
InputStream _in = new FileInputStream(srcFile);
zipOut.putNextEntry(new ZipEntry(path + srcFile.getName()));
int len = 0;
byte[] _byte = new byte[1024];
while ((len = _in.read(_byte)) > 0) {
zipOut.write(_byte, 0, len);
}
_in.close();
zipOut.closeEntry();
}
}
}
压缩目录或文件夹:看具体项目代码,主要是自己记录一下这种需求的代码,方便以后自己遇到这种需求,不要重新写,大家有好的方法可以交流呢!!
实现效果图:
猜你喜欢
- /
- /com.zip
- /com.zip/.classpath
- /com.zip/.project
- /com.zip/.settings
- /com.zip/.settings/.jsdtscope
- /com.zip/.settings/org.eclipse.jdt.core.prefs
- /com.zip/.settings/org.eclipse.m2e.core.prefs
- /com.zip/.settings/org.eclipse.wst.common.component
- /com.zip/.settings/org.eclipse.wst.common.project.facet.core.xml
- /com.zip/.settings/org.eclipse.wst.jsdt.ui.superType.container
- /com.zip/src
- /com.zip/src/main
- /com.zip/src/main/java
- /com.zip/src/main/java/com
- /com.zip/src/main/java/com/chen
- /com.zip/src/main/java/com
- /com.zip/src/main/java
- /com.zip/src/main
- /com.zip