package com.common;
import java.io.*;
import java.util.*;
import java.util.zip.*;
public class ZipFiles_20091120
{
static final int BUFFER = 2048; //压缩缓冲区大小
public int files = 0;
public String filename = "";
/**
* 对选定的当前目录下所有文件进行压缩
* @param inputUrl 被压缩文件所在目录路径,路径要已"/"结束
* @param outputUrl 压缩文件输出路径,包括zip文件名称
*/
public void zip(String inputUrl, String outputUrl)
{
try
{
BufferedInputStream origin = null;
FileOutputStream dest = new FileOutputStream(outputUrl);
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));
byte data[] = new byte[BUFFER];
// 得到当前目录下文件列表
File f = new File(inputUrl);
File files[] = f.listFiles();
//compressFiles(inputUrl, files, out, data);
///////////
for (int i=0; i < files.length; i++)
{
if (files[i].isFile()&&!files[i].getName().equals("temp.zip"))
{
System.out.println("NAME: "+files[i].getName());
System.out.println("Adding: "+files[i]);
FileInputStream fi = new FileInputStream(files[i]);
origin = new BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files[i].getName());
out.putNextEntry(entry);
int count;
while((count = origin.read(data, 0, BUFFER)) != -1)
{
out.write(data, 0, count);
}
origin.close();
}
}
///////////
out.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 对选定的压缩文件进行解压缩。
* @param inputUrl zip压缩文件路径,包括zip文件名称
* @param outputUrl 解压缩文件输出目录路径
*/
public void unZip(String inputUrl, String outputUrl)
{
try
{
BufferedOutputStream dest = null;
BufferedInputStream is = null;
ZipEntry entry;
ZipFile zipfile = new ZipFile(inputUrl);
Enumeration e = zipfile.entries();
while (e.hasMoreElements())
{
entry = (ZipEntry) e.nextElement();
is = new BufferedInputStream
(zipfile.getInputStream(entry));
int count;
byte data[] = new byte[BUFFER];
FileOutputStream fos = new
FileOutputStream(outputUrl + entry.getName());
dest = new BufferedOutputStream(fos, BUFFER);
while ( (count = is.read(data, 0, BUFFER)) != -1)
{
dest.write(data, 0, count);
}
this.files++;
dest.flush();
dest.close();
is.close();
}
zipfile.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 遍历要压缩的目录及所有子目录
* @param inputUrl
* @param files
* @param out
* @param data
*/
public void compressFiles(String inputUrl, File[] files,
ZipOutputStream out,
byte data[])
{
try
{
for (int i = 0; i < files.length; i++)
{
if (files[i].isDirectory())
{
String dirPath = inputUrl + files[i].getName() + "/";
File df = new File(dirPath);
File dirFiles[] = df.listFiles();
compressFiles(dirPath, dirFiles, out, data);
}
else
{
doZip(inputUrl, files[i], out, data);
}
}
}
catch (Exception e)
{
System.out.println(e);
}
}
/**
* 打包压缩文件
* @param inputUrl
* @param files
* @param out
* @param data
*/
public void doZip(String inputUrl, File files, ZipOutputStream out,
byte data[])
{
try
{
FileInputStream fi = new FileInputStream(inputUrl + files.getName());
BufferedInputStream origin = new BufferedInputStream(fi, BUFFER);
ZipEntry entry = new ZipEntry(files.getName());
out.putNextEntry(entry);
int count;
while ( (count = origin.read(data, 0, BUFFER)) != -1)
{
out.write(data, 0, count);
}
fi.close();
origin.close();
}
catch (IOException e)
{
System.out.println(e);
}
}
public int getFiles()
{
return this.files;
}
static public void main(String args[])
{
try
{
ZipFiles_20091120 zf = new ZipFiles_20091120();
// zf.zip("g:/test/", "g:\\test\\temp.zip");
/*
String tempFile="g:\\test\\temp.zip";
File file = new File(tempFile);
System.out.println((int) file.length());
byte[] buffer = new byte[ (int) file.length()];
BufferedInputStream input = new BufferedInputStream(new FileInputStream(tempFile));
input.read(buffer, 0, buffer.length);
input.close();
long b = System.currentTimeMillis();
System.out.println(buffer);
com.sti.datacenter.server.DataControlService ds = new com.sti.datacenter.server.DataControlService();
ds.sendClientData(buffer);
*/
zf.unZip("D:/temp/zipmobile.zip","D:/temp/");
System.out.println("OOOOOOOOOKKKKKKKKKK");
}
catch (Exception e)
{
}
}
}
分享到:
相关推荐
Java实现的带密码压缩与解压zip文件源码,可将多个文件使用不同的密码压进同一个zip文件;可以解压带密码的zip文件(store压缩模式)
java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip压缩功能,java实现zip...
NULL 博文链接:https://zhenyong.iteye.com/blog/1576148
C语言实现Zip压缩解压
网上很多描述java解压中文乱码的问题,很多描述不全.由于工作需要整理出一个完整版.简单实用.下载后请从ZipUtil.java的main方法开始,一目了然. public static void main(String args[]) { new ZipUtil().unZip("E:\\...
2048小游戏的JAVA实现.zip2048小游戏的JAVA实现.zip2048小游戏的JAVA实现.zip 2048小游戏的JAVA实现.zip2048小游戏的JAVA实现.zip2048小游戏的JAVA实现.zip 2048小游戏的JAVA实现.zip2048小游戏的JAVA实现.zip2048小...
包含了使用的jar包,以及一个Java类,实现了使用Java对多目录多层级的文件进行打包,以及对ZIP包进行解压缩的操作。
完美支持解压zip文件多层文件解压,文件夹,文件,支持中文。
java解压zip压缩文件,读取压缩文件中的内容并输出到输出文件中。
java实现解压zip文件代码实例直接运行即可,要注意要解压的文件一定是直接压缩成zip然后进行解压直接更改文件后缀名的压缩文件会报错。
java版本的zip压缩和解压程序,命令行的,没有界面,支持文件夹压缩解压
java 操作Zip文件(压缩、解压、加密) zip4j-1.3.2.jar ant-1.10.6.jar
java实现的解压与压缩的类 其中有zip和rar类型的 还包括了所需的架包
java压缩解压ZIP
java控制指定路径下的文件夹压缩成zip格式。 java将zip压缩包解压成为文件夹。直接使用io流进行操作,不需借助其他jar包
1、纯C++实现,未使用第三方库和程序。 2、VC6开发环境,2003,2005以上开发版本未试验。 3、使用非常简单,可以对含有多层目录的ZIP文件解压。
java rar解压 zip解压 工具
Java实现小游戏.zipJava实现小游戏.zipJava实现小游戏.zipJava实现小游戏.zip Java实现小游戏.zipJava实现小游戏.zipJava实现小游戏.zipJava实现小游戏.zip Java实现小游戏.zipJava实现小游戏.zipJava实现小游戏.zip...
Java实现扫雷游戏.zipJava实现扫雷游戏.zipJava实现扫雷游戏.zipJava实现扫雷游戏.zip Java实现扫雷游戏.zipJava实现扫雷游戏.zipJava实现扫雷游戏.zipJava实现扫雷游戏.zip Java实现扫雷游戏.zipJava实现扫雷游戏....
java zip 压缩解压例子