你是否正在寻找关于zipentry的内容?让我把最实用的东西奉献给你:

转载:java jdk实例宝典

感觉讲的很好就转载在这保存!

java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,需要导入该包。

使用zipoutputstream可以实现文件压缩,所有写入到zipoutputstream输入流中的数据,都会被ZIP格式压缩。

每个被压缩的文件或者目录在zip文件中都对应一个zipentry对象,每个zipentry都有一个name属性,表示它相对于zip文件目录的相对路径,对于目录,路径以“/“结尾,对于文件,路劲以文件名结尾。

zipoutputstream的putnextentry方法往zip文件中添加zipentry,紧接着写入到该文件zipoutputstream流中的数据都被保存到zipentry中,知道调用zipoutputstream的closeentry方法。

zipfile表示一个zip文件,它的entries方法能获得zip文件中的zipentry集合。的奥zipentry的输入流,。

实例:

package book.io;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.Enumeration;

import java.util.zip.zipentry;

import java.util.zip.ZipFile;

import java.util.zip.ZipOutputStream;

/**

* 用ZIP压缩和解压缩文件或目录

*/

public class CompressUtil {

/**

* 压缩文件或者目录

* @param baseDirName压缩的根目录

* @param fileName根目录下待压缩的文件或文件夹名,

* 星号*表示压缩根目录下的全部文件。

* @param targetFileName目标ZIP文件

*/

public static void zipFile(String baseDirName, String fileName,

String targetFileName){

//检测根目录是否存在

if (baseDirName == null){

System.out.println("压缩失败,根目录不存在:" + baseDirName);

return;

}

File baseDir = new File(baseDirName);

if (!baseDir.exists() || (!baseDir.isDirectory())){

System.out.println("压缩失败,根目录不存在:" + baseDirName);

return;

}

String baseDirPath = baseDir.getAbsolutePath();

//目标文件

File targetFile = new File(targetFileName);

try{

//创建一个zip输出流来压缩数据并写入到zip文件

ZipOutputStream out =new ZipOutputStream(

new FileOutputStream(targetFile));

if (fileName.equals("*")){

//将baseDir目录下的所有文件压缩到ZIP

CompressUtil.dirToZip(baseDirPath, baseDir, out);

} else {

File file = new File(baseDir, fileName);

if (file.isFile()){

CompressUtil.fileToZip(baseDirPath, file, out);

} else {

CompressUtil.dirToZip(baseDirPath, file, out);

}

}

out.close();

System.out.println("压缩文件成功,目标文件名:" + targetFileName);

} catch (IOException e){

System.out.println("压缩失败:" + e);

e.printStackTrace();

}

}

/**

* 解压缩ZIP文件,将ZIP文件里的内容解压到targetDIR目录下

* @param zipName待解压缩的ZIP文件名

* @param targetBaseDirName目标目录

*/

public static void upzipFile(String zipFileName, String targetBaseDirName){

if (!targetBaseDirName.endsWith(File.separator)){

targetBaseDirName += File.separator;

}

try {

//根据ZIP文件创建ZipFile对象

ZipFile zipFile = new ZipFile(zipFileName);

zipentry entry = null;

String entryName = null;

String targetFileName = null;

byte[] buffer = new byte[4096];

int bytes_read;

//获取ZIP文件里所有的entry

Enumeration entrys = zipFile.entries();

//遍历所有entry

while (entrys.hasMoreElements()) {

entry = (zipentry)entrys.nextElement();

//获得entry的名字

entryName = entry.getName();

targetFileName = targetBaseDirName + entryName;

if (entry.isDirectory()){

// 如果entry是一个目录,则创建目录

new File(targetFileName).mkdirs();

continue;

} else {

//如果entry是一个文件,则创建父目录

new File(targetFileName).getParentFile().mkdirs();

}

//否则创建文件

File targetFile = new File(targetFileName);

System.out.println("创建文件:" + targetFile.getAbsolutePath());

//打开文件输出流

FileOutputStream os = new FileOutputStream(targetFile);

//从ZipFile对象中打开entry的输入流

InputStream is = zipFile.getInputStream(entry);

while ((bytes_read = is.read(buffer)) != -1){

os.write(buffer, 0, bytes_read);

}

//关闭流

os.close( );

is.close( );

}

System.out.println("解压缩文件成功!");

} catch (IOException err) {

System.err.println("解压缩文件失败: " + err);

}

}

/**

* 将目录压缩到ZIP输出流。

*/

private static void dirToZip(String baseDirPath, File dir,

ZipOutputStream out){

if (dir.isDirectory()){

//列出dir目录下所有文件

File[] files = dir.listFiles();

// 如果是空文件夹

if (files.length == 0){

ZipEntry entry = new zipentry(getEntryName(baseDirPath, dir));

//存储目录信息

try {

out.putNextEntry(entry);

out.closeEntry();

} catch (IOException e) {

e.printStackTrace();

}

return;

}

for (int i=0; i

if (files[i].isFile()){

//如果是文件,调用fileToZip方法

CompressUtil.fileToZip(baseDirPath, files[i], out);

} else {

//如果是目录,递归调用

CompressUtil.dirToZip(baseDirPath, files[i], out);

}

}

}

}

/**

* 将文件压缩到ZIP输出流

*/

private static void fileToZip(String baseDirPath, File file,

ZipOutputStream out){

FileInputStream in = null;

zipentry entry = null;

//创建复制缓冲区

byte[] buffer = new byte[4096];

int bytes_read;

if (file.isFile()){

try {

// 创建一个文件输入流

in = new FileInputStream(file);

//做一个zipentry

entry = new zipentry(getEntryName(baseDirPath, file));

//存储项信息到压缩文件

out.putNextEntry(entry);

//复制字节到压缩文件

while((bytes_read = in.read(buffer)) != -1){

out.write(buffer, 0, bytes_read);

}

out.closeEntry();

in.close();

System.out.println("添加文件"

+ file.getAbsolutePath() + "被到ZIP文件中!");

} catch (IOException e){

e.printStackTrace();

}

}

}

/**

* 获取待压缩文件在ZIP文件中entry的名字。即相对于跟目录的相对路径名

* @param baseDirPath

* @param file

* @return

*/

private static String getEntryName(String baseDirPath, File file){

if (!baseDirPath.endsWith(File.separator)){

baseDirPath += File.separator;

}

String filePath = file.getAbsolutePath();

// 对于目录,必须在entry名字后面加上"/",表示它将以目录项存储。

if (file.isDirectory()){

filePath += "/";

}

int index = filePath.indexOf(baseDirPath);

return filePath.substring(index + baseDirPath.length());

}

public static void main(String[] args) {

//压缩C盘下的temp目录,压缩后的文件是C:/temp.zip

String baseDirName = "C:/";

String fileName = "temp/";

String zipFileName = "C:/temp.zip";

CompressUtil.zipFile(baseDirName, fileName, zipFileName);

//将刚创建的ZIP文件解压缩到D盘的temp目录下

System.out.println();

fileName = "D:/temp";

CompressUtil.upzipFile(zipFileName, fileName);

}

}

以上就是关于zipentry的全部内容,相信你一定会非常满意。

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-15470-1.html

zipentry java_zipentry?java实现解压缩?substring?Java用ZIP格式压缩和解压缩文件相关推荐

  1. java ant解压缩_java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解

    java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解 发布于 2020-4-7| 复制链接 摘记: java ant包中的org.apache.tools.zip实现 ...

  2. Java用ZIP格式压缩和解压缩文件

    转载:java jdk实例宝典 感觉讲的很好就转载在这保存! java.util.zip包实现了Zip格式相关的类库,使用格式zip格式压缩和解压缩文件的时候,需要导入该包. 使用zipoutputs ...

  3. java 解压与压缩代码_Java实现多文件压缩和解压缩代码详解

    Java实现多文件压缩和解压缩代码 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStre ...

  4. Java 的zip压缩和解压缩

    Java 的zip压缩和解压缩 好久没有来这写东西了,今天中秋节,有个东西想拿出来分享,一来是工作中遇到的问题,一来是和csdn问候一下,下面就分享一个Java中的zip压缩技术,代码实现比较简单,代 ...

  5. java putnextentry_Java对zip格式压缩和解压缩

    Java对zip格式压缩和解压缩 通过使用java的相关类可以实现对文件或文件夹的压缩,以及对压缩文件的解压. 1.1 ZIP和GZIP的区别 gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格 ...

  6. java.util.zip_[Java 基础] 使用java.util.zip包压缩和解压缩文件

    Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作. 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作. Zi ...

  7. Java代码实现字符串压缩和解压缩

    在 IO流中我们一般操作文件的输出和输入,但是很少看见字符串压缩和解压缩的操作,本文中将带你了解不一般的IO流操作 目录 一.使用`gzip`进行压缩 二.使用`gzip`进行解压缩 三.使用`zip ...

  8. Java使用winrar压缩和解压缩文件

    Java使用winrar压缩和解压缩文件 2015-08-17| 发布: | 浏览: 740 |保存PDF Winrar可以使用命令行进行压缩和解压缩,如: 将D:/aa.doc 压缩为:aa.rar ...

  9. JAVA 7z Seven Zip 压缩和解压文件

    JAVA 7z Seven Zip 压缩和解压文件 7-Zip是基于GNU LGPL协议发布的软件,通过全新算法使压缩比率大幅提升 本文主要讲解通过JAVA方式把文件压缩成7z文件和对7z文件进行解压 ...

  10. JAVA从入门到精通书中ZIP压缩和解压缩错误修正

    本人买了一本Java从入门到精通书籍,学到zip压缩和解压这部分,发现按照书上的代码会出现问题,无法完成压缩和解压缩 首先是压缩原文代码: public static void zip(String ...

最新文章

  1. linux yum安装分区工具,搭建本地和网络yum源、源码编译安装软件及磁盘分区管理...
  2. JDK 14 里的调试神器了解一下?
  3. python怎么安装requests库-python怎么安装requests库
  4. Eclipse 高亮显示
  5. 翻译: TypeScript 1.8 Beta 发布
  6. (C#) 调用执行批处理文件
  7. 使用mvc模式读取服务器上的文件,关于C#:如何使用asp.net MVC应用程序从服务器上的网络路径读取...
  8. 是时候开始用C#快速开发移动应用了
  9. C语言调用es6,ES6 箭头函数、普通函数、调用方法
  10. django-form and fields validation
  11. 小米手环无法模拟门卡_颜值与功能得到全面升级,小米手环4 NFC版上手体验
  12. firewall-cmd
  13. mysql数据存储过程详解_mysql数据存储过程参数实例详解
  14. html图片等比例拉伸,CSS控制图片等比例缩放
  15. 42. Understand the two meanings of typename.
  16. 微商分销代理新零售商城源码
  17. vscode通过扩展插件实现流程图绘制
  18. 小猪佩奇粉红猪 成年人重新拾起英文笔记
  19. python 爬虫1
  20. 最简单的Hopper Disassembler玩转Mac逆向

热门文章

  1. 网站被黑提醒该站点可能受到黑客攻击,部分页面已被非法篡改
  2. MAC下的SVN工具
  3. windows安装使用programer dvorak
  4. matlab符号运算ppt,第5 章Matlab符号运算.ppt
  5. 塞规公差带图_孔与轴用量规的公差带图
  6. Python_提取图片像素值
  7. 怎么卸载脚手架_安装卸载流程 · 广联达BIM模板脚手架设计软件帮助文档 · 看云...
  8. origin 修改部分拟合好的曲线
  9. 双网卡同时上内外网设置教程
  10. matlab 8fsk,MFSK蒙特卡洛仿真与理论误码率的对比