代码语言
.
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
】
压缩解压文件
作者:
liangjw0504
/ 发布于
2015/9/22
/
737
package com.util; 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.io.OutputStream; import java.net.URL; import java.util.Enumeration; import java.util.zip.CRC32; import java.util.zip.CheckedOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; import javax.servlet.ServletContext; import javax.servlet.http.HttpServlet; /** * 解压缩文件 * */ public class Zip extends HttpServlet { /** * */ private static final long serialVersionUID = 5142373267185568029L; /** * 压缩文件为zip格式 * * @paramzipFile 压缩文件后的文件名 * @paramsrcPathName 待压缩文件 * @throws IOException * 文件不存在异常 */ public static void zipFile(String srcPathName) throws IOException { File file = new File(srcPathName); if (!file.exists()) throw new RuntimeException(srcPathName + "not exist!"); //System.out.println(srcPathName); FileOutputStream fileOutputStream = new FileOutputStream(srcPathName+".zip"); CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32()); ZipOutputStream out = new ZipOutputStream(cos); String basedir = ""; compress(file, out, basedir); out.flush(); out.close(); } private static void compress(File file, ZipOutputStream out, String basedir) throws IOException { if (file.isDirectory()) { compressDirectory(file, out, basedir); } else { compressFile(file, out, basedir); } } private static void compressDirectory(File dir, ZipOutputStream out, String basedir) throws IOException { if (!dir.exists()) return; File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { compress(files[i], out, basedir + dir.getName() + "/"); } } private static void compressFile(File file, ZipOutputStream out, String basedir) throws IOException { if (!file.exists()) { return; } BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); ZipEntry entry = new ZipEntry(basedir + file.getName()); out.putNextEntry(entry); int len = 0; byte data[] = new byte[1024]; while ((len = bis.read(data)) != -1) { out.write(data, 0, len); } bis.close(); } private static void createDir(String path) { File dir = new File(path); if (dir.exists() == false) dir.mkdir(); } private static String getSuffixName(String name) { return name.substring(0, name.lastIndexOf(".")); } /** * 解压缩文件 * @throws IOException * 文件读写异常 */ public static void unZip(String zipFilePath) throws IOException { File file = new File(zipFilePath+".zip"); ZipFile zipFile = new ZipFile(file); File unzipFile = new File(zipFilePath); if (unzipFile.exists()) unzipFile.delete(); unzipFile.mkdirs(); Enumeration zipEnum = zipFile.entries(); InputStream input = null; OutputStream output = null; ZipEntry entry = null; while (zipEnum.hasMoreElements()) { entry = (ZipEntry) zipEnum.nextElement(); String entryName = new String(entry.getName()); String names[] = entryName.split("\\/"); int length = names.length; String path = unzipFile.getAbsolutePath(); for (int v = 0; v < length; v++) { if (v < length - 1) { path += "/" + names[v] + "/"; createDir(path); } else { if (entryName.endsWith("/")) createDir(unzipFile.getAbsolutePath() + "/" + entryName); else { input = zipFile.getInputStream(entry); output = new FileOutputStream(new File(unzipFile.getAbsolutePath() + "/" + entryName)); byte[] buffer = new byte[1024 * 8]; int readLen = 0; while ((readLen = input.read(buffer, 0, 1024 * 8)) != -1) output.write(buffer, 0, readLen); input.close(); output.flush(); output.close(); } } } } } public static void main(String[] args) { Zip zip=new Zip(); //String path=zip.getClassPath();//System.getProperty("user.dir"); try { String path=zip.findServerPath(); //System.out.println(path); //压缩 //zip.zipFile(path+"testzip");//路径+文件名 // 解压 //zip.unZip(path+"testzip"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 获取服务器端的webapps路径 * @return */ public String findServerPath() throws Exception{ String path=this.getServletContext().getRealPath("/"); return path; } /** * 得到本类物理路径所在文件夹 * @return */ private String getClassPath()throws Exception{ String strClassName = getClass().getName(); String strPackageName = ""; if(getClass().getPackage() != null) { strPackageName = getClass().getPackage().getName(); } String strClassFileName = ""; if(!"".equals(strPackageName)){ strClassFileName = strClassName.substring(strPackageName.length() + 1,strClassName.length()); } else { strClassFileName = strClassName; } URL url = null; url = getClass().getResource(strClassFileName + ".class"); String strURL = url.toString(); //String middleString = System.getProperty("file.separator"); // 取得操作系统路径分割符 strURL = strURL.substring(strURL.indexOf( "/" ) + 1,strURL.lastIndexOf( "/" )); return strURL; } }
试试其它关键字
压缩解压文件
同语言下
.
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转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
liangjw0504
贡献的其它代码
(
36
)
.
控制DIV永远固定在页面底部
.
表格点击行高亮显示
.
不提示安全ActiveX直接跳转页面
.
下拉列表框,动态添加删除OPTION
.
批量替换字段中的字符
.
IE提交表单记录历史,点击返回信息仍在
.
根据当前文字选择返回被选中的文字
.
取得MAC地址的脚本
.
压缩解压文件
.
生成固定长度的随机字符和数字
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3