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编程环境中,解压不同类型的压缩文件,如RAR5、Zip和7z,是一项常见的任务。为了实现这一功能,我们需要使用特定的库,因为Java标准库并不直接支持RAR5和7z格式。这里我们将详细探讨如何使用Java来处理这些...
在Java编程环境中,解压ZIP和RAR文件是常见的任务,特别是在处理数据传输、备份或集成系统时。本文将深入探讨如何使用Java实现这一功能,并提供详细的步骤和代码示例。 首先,我们来看如何使用Java来解压ZIP文件。...
本篇将详细探讨如何在Android中实现Zip文件的加压和解压操作。 首先,我们要了解Zip文件格式。Zip是一种广泛使用的档案格式,它可以将多个文件和目录打包成一个单一的文件,方便存储和传输。在Android中,我们可以...
对于加压功能,反向操作即可,使用`ZipOutputStream`将文件写入ZIP格式,同时为每个文件创建`ZipEntry`。 接下来是加密部分。Java标准库虽然不直接支持ZIP文件的加密,但我们可以借助第三方库,比如Apache Commons ...
`Zip4j`是一个强大的Java库,专门为处理ZIP文件而设计,它提供了丰富的API来创建、读取、更新和解压ZIP文件,同时支持加密。 首先,我们需要了解ZIP文件格式。ZIP是一种广泛使用的文件归档格式,可以将多个文件和...
【描述】"这款zip文件加压解压工具使用java开发"表明它利用了Java的强大功能和跨平台特性。Java是一种广泛使用的编程语言,以其“一次编写,到处运行”的理念著称。开发者选择Java作为基础,可能是因为它能够提供...
Mac版Java反编译工具jd-gui加压即用,无需安装,用过的都说太爽了,让我们快来试一下吧,配jd-gui操作手册链接:https://blog.csdn.net/m0_58697127/article/details/122538451?spm=1001.2014.3001.5502
解压项目后需要先安装数据库,详细请参照《java后台安装部署文档.docx》文档描述,已经上传资源库了。加压后先执行默认sql脚本: project\03.数据库设计\bus_scan_code_db.sql 然后连接数据库进行查看,具体使用可以...
描述中的“无需安装加压即可使用,简单方便”意味着这个工具是一个便携式的,用户可以直接解压后运行,无需复杂的安装步骤。这种便捷性对于开发者来说是非常宝贵的,尤其是在不同的工作环境中,快速获取和使用工具...
Cesium 加载 3dtile 示例代码,可直接解压运行 压缩包内包含 tomcat 8.5,加压之后,有 java 环境的话可以直接运行查看效果 端口为:8085 访问地址为:http://localhost:8085/3dtile/cesium/Apps/HelloWorld.html
轻量: 共219KB(代码量约300行), 无需安装,加压即可使用 低侵入: 基于日志文件进行统计,无需修改原程序 使用说明 2.1 下载工具包 log_monitor.tar.gz,并解压 2.2 之后...
【描述】"这个不是安装版,加压后既可以使用",这表明用户只需要下载Tomcat7的zip或tar.gz压缩文件,解压到任意目录下,然后按照一定的步骤配置和启动,就能在本地运行Tomcat服务器。 以下是详细的操作步骤和相关...
通常,用户需要下载插件的zip文件,解压后将内容移动到Eclipse的dropins或plugins目录,这样Eclipse在启动时会自动识别并安装插件。 **详细知识点** 1. **Subversion (svn)**:Subversion是一个集中式的版本控制...