代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
Java 解压,压缩 zip文件
作者:
wzfz
/ 发布于
2015/6/29
/
594
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; public class ZipUtil { public static void unZip(String src,String target) throws IOException{ ZipInputStream zipIn=null; ZipFile zip=null; try { zipIn = new ZipInputStream(new FileInputStream(src)); ZipEntry in=null; zip=new ZipFile(src); while((in=zipIn.getNextEntry())!=null){ File file=new File(target+in.getName()); if(in.getName().endsWith("/")){ file.mkdirs(); } else{ byte[] b=IOUtil.getByteByInputStream(zip.getInputStream(in)); if(!new File(file.getParent()).exists()){ new File(file.getParent()).mkdirs(); } FileOutputStream fout=new FileOutputStream(file); fout.write(b); fout.close(); } } zip.close(); } finally{ if(zipIn!=null){ zipIn.close(); } if(zip!=null){ zip.close(); } } } public static void inZip(List<File> files,String basePath,String target) throws IOException{ List<File> cfiles=new ArrayList<File>(); for (File file : files){ cfiles.add(file); } for (File file : cfiles) { if(file.isDirectory()){ IOUtil.getAllFiles(file.toString(), files); } } ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(target)); for (File file : files) { System.out.println(file); ZipEntry entry = null; byte[] b = new byte[1024]; int len = 0; if (file.isFile()) { entry = new ZipEntry(file.toString().substring(basePath.length())); zos.putNextEntry(entry); InputStream is = new BufferedInputStream(new FileInputStream(file)); while ((len = is.read(b, 0, b.length)) != -1) { zos.write(b, 0, len); } is.close(); } else{ } } zos.close(); } public static void main(String[] args) { try { List<File> files=new LinkedList<File>(); files.add(new File("D:/tmp")); files.add(new File("D:/t2.jpg")); inZip(files,"D:/","D:/1.zip"); unZip("D:/1.zip", "D:/tmp/"); } catch (IOException e) { e.printStackTrace(); } } } import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.List; public class IOUtil { public static final byte[] getByteByInputStream(InputStream in) { ByteArrayOutputStream bout = new ByteArrayOutputStream(); byte[] tempByte = new byte[1024]; try { int length = 0; while ((length = in.read(tempByte)) != -1) { bout.write(tempByte, 0, length); } } catch (IOException e) { e.printStackTrace(); } finally { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } return bout.toByteArray(); } public static final String getStringInputStream(InputStream in) { try { return new String(getByteByInputStream(in),"UTF-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } return null; } public static final void getAllFiles(String path, List<File> files) { getAllFilesByProfix(path, null, files); } public static final void getAllFilesByProfix(String path, String suffix, List<File> files) { File file = new File(path); if (file.isDirectory()) { File[] fs = file.listFiles(); if (fs != null) { for (File file2 : fs) { if (file2.isDirectory()) { getAllFilesByProfix(file2.getPath(), suffix, files); } else { if (suffix != null) { if (file2.toString().endsWith(suffix)) { files.add(file2); } } else { files.add(file2); } } } } } else { if (suffix != null) { if (file.toString().endsWith(suffix)) { files.add(file); } } else { files.add(file); } } } public static void moveOrCopy(String filer,String tag,boolean isMove) { System.out.println(filer); File f=new File(filer); if(f.isDirectory()) { File fs[]=new File(filer).listFiles(); tag=tag+"/"+f.getName(); new File(tag).mkdirs(); for(File fl:fs) { if(fl.isDirectory()) { moveOrCopy(fl.toString(),tag,isMove); } else { moveOrCopyFile(fl.toString(),tag+"/"+fl.getName(),isMove); } } } else{ moveOrCopyFile(f.toString(),tag+"/"+f.getName(),isMove); } } public static void writeStrToFile(String str,File file){ writeBytesToFile(str.getBytes(), file); } public static void writeBytesToFile(byte[] bytes,File file){ try { FileOutputStream out = new FileOutputStream(file); out.write(bytes); out.close(); } catch (IOException e) { e.printStackTrace(); } } public static void moveOrCopyFile(String src, String tag, boolean isMove) { try { long s = System.currentTimeMillis(); File f = new File(src); FileInputStream in = new FileInputStream(f); new File(tag).getParentFile().mkdirs(); FileOutputStream out = new FileOutputStream(tag); // 小于1M(大小根据自己的情况而定)的文件直接一次性写入。 byte[] b = new byte[1024]; int length = 0; while ((length = in.read(b)) != -1) { out.write(b, 0, length); } // 一定要记得关闭流额。 不然其他程序那个文件无法进行操作 in.close(); out.close(); System.out.println(System.currentTimeMillis() - s); if (isMove) { f.delete(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
试试其它关键字
Java
解压
压缩
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
wzfz
贡献的其它代码
(
8
)
.
防刷新的倒计时
.
点击返回键时恢复被AJAX更改过的数据
.
解压压缩 zip文件
.
实现事件机制实例分析
.
统计大文件行数
.
偏函数使用
.
防刷新的倒计时
.
Java 解压,压缩 zip文件
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3