`

Java Zip应用

 
阅读更多

应用系统中使用jdk原生的包进行解压缩时报错,后来改用antzip没问题。

使用JDK自带的类进行解压缩,代码如下:

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.Inet6Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

//import org.apache.axis.utils.StringUtils;
import org.apache.log4j.Logger;

public class Utils {
	private static final Logger log = Logger.getLogger(Utils.class);
	
	/**
	 * 工具类,私有构造函数防止外部直接实例化
	 */
	private Utils(){
		
	}
	
	/** 文件分隔符 */
	public static final String FILE_SEPARATOR = System.getProperty("file.separator");
	
	/** 行分隔符 */
	public static final String LINE_SEPARATOR = System.getProperty("line.separator");
	
	/** 用户工作目录 */
	public static final String USER_DIR = System.getProperty("user.dir");
	
	/**
	 * 格式化字符串为固定长度
	 * @param original String 原始字符串
	 * @param len  int 需要格式化的长度
	 * @return 格式化后的字符串
	 */
	public static String formatString(String original,int len){
		// 原始字符串为null,转换为""字符串
		if(null == original){
			original = "";
		}
		// 返回变量
		StringBuffer result = new StringBuffer();
		// 原始字符串长度
		int oriLength = original.length();
		// 需要填充长度
		int fillLength = len - oriLength;
		
		if(fillLength < 0){
			// 原始字符串长度>需要格式化的长度,对原始字符串进行截取len变量的长度
			result.append(original.substring(0,len));
		} else {
			result.append(original);
			for (int i = 0; i < fillLength; i++) {
				result.append(" ");
			}
		}
		return result.toString();
	}
	
	/**
	 * 文件路径结尾检查
	 * @param filePath
	 * @return
	 */
	public static String checkFilePathEnd(String filePath){
		if(filePath.endsWith(Utils.FILE_SEPARATOR)){
			return filePath;
		} else {
			return filePath + Utils.FILE_SEPARATOR;
		}
	}
	
	/**
	 * 格式化日期,默认格式yyyy-MM-dd hh:mm:ss
	 * @param date
	 * @return
	 */
	public static String formateDate(Date date){
		return formateDate(date, "yyyy-MM-dd HH:mm:ss");
	}
	/**
	 * 格式化日期,默认格式yyyy-MM-dd hh:mm:ss
	 * @param date
	 * @return
	 */
	public static String formateDate(Date date, String format){
		if (date == null){
			return "";
		} else {
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			return sdf.format(date);
		}
	}
	
	/**
	 * 按指定日期格式,以当前系统时间为基础进行格式化
	 * @param format 日期格式
	 * @return 如果格式不存在,返回"yyyy-MM-dd HH:mm:ss"格式日期
	 */
	public static String formateDate(String format) {
		if (format == null || format.equals("") || format.length() == 0) {
			return formateDate(new Date());
		} else {
			SimpleDateFormat sdf = new SimpleDateFormat(format);
			return sdf.format(new Date());
		}
		
	}
	
	/**
	 * 格式化字符串为日期
	 * @param str
	 * @return
	 */
	public static Date formateString2Date(String str) {
		if(str.trim().equals("")){
			return null;
		}
		Date date = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		try {
			date = sdf.parse(str);
		} catch (ParseException e) {
			log.error("String '" + str + "' convert to date format 'yyyy-MM-dd HH:mm:ss' occur error.", e);
		}
		return date;
	}
	
//	/**
//	 * MQ消息字节转换为MessageHead对象
//	 * @param messageBytes
//	 * @return
//	 */
//	public static MessageHead bytesToMessageHead(byte[] messageBytes){
//		MessageHead head = new MessageHead();
//		head.setMessageVersion(new String(messageBytes,0,32).trim());
//		head.setMessageType(new String(messageBytes,32,16).trim());
//		head.setSender(new String(messageBytes,48,16).trim());
//		head.setReceiver(new String(messageBytes,64,16).trim());
//		head.setFileName(new String(messageBytes,80,64).trim());
//		head.setSendTime(formateString2Date(new String(messageBytes,144,19)));
//		head.setQuarantineTime(formateString2Date(new String(messageBytes,163,19)));
//		head.setShareTime(formateString2Date(new String(messageBytes,182,19)));
//		head.setReceiveTime(formateString2Date(new String(messageBytes,201,19)));
//		head.setPrimaryInfo(new String(messageBytes,220,64).trim());
//		return head;
//	}
	
	/**
	 * 获取应用根路径
	 * @return 发生异常返回null
	 */
	public static String getAppPath(){
		String appPath = null;
		try {
			File file = new File(".");
			appPath = file.getCanonicalPath();
		} catch (Exception e) {
		}
		return appPath;
	}
	
	/**
	 * 关闭输入字节流
	 * @param is 输入字节流
	 */
	public static void closeInputStream(InputStream is){
		if(is != null){
			try {
				is.close();
			} catch (Exception e) {
				log.error("InputStream close failed.",e);
			}
		}
	}
	
	/**
	 * 关闭输出字节流
	 * @param os 输出字节流
	 */
	public static void closeOutputStream(OutputStream os){
		if(os != null){
			try {
				os.close();
			} catch (IOException e) {
				log.error("OutputStream close failed.",e);
			}
		}
	}
	
	/**
	 * 在指定路径后加上当天日期,并判断指定的路径是否存在,不存在则创建目录
	 * @param path 指定路径
	 */
	public static String genNowDatePath(String path) {
		// 在当前路径后加上日期
		String resultPath = checkFilePathEnd(path) + formateDate("yyyy-MM-dd");
		// 检查路径是否存在,不存在则创建
		File file = new File(checkFilePathEnd(path) + formateDate("yyyy-MM-dd"));
		if (!file.exists()) {
			file.mkdirs();
		}
		return resultPath;
	}
	
	/**
	 * 检查路径是否存在,不存在则创建
	 * @param path 路径
	 */
	public static void checkPath(String path) {
		try {
			File file = new File(path);
			if (!file.exists()) {
				log.info("file path[ " + path + " ] not exists, now create!!!");
				file.mkdirs();
			}
		} catch (SecurityException e) {
			log.error("Check path error, was not allowed to read check file existance,file:[" + path + "].", e);
		}
	}
	
	/**
	 * 获取本机IP地址
	 * 
	 * @return ip 返回网卡绑定的4位IP地址 
	 */
	public static String getLocalIP() {
		String ip = "";
		try {
			Enumeration<NetworkInterface> nis = NetworkInterface.getNetworkInterfaces();
			while(nis.hasMoreElements()) {
				NetworkInterface ni = nis.nextElement();
				if (!ni.getName().startsWith("eth")) {
					continue;
				}
				Enumeration<InetAddress> ias = ni.getInetAddresses();
				while (ias.hasMoreElements()) {
					InetAddress ia = ias.nextElement();
					if (ia instanceof Inet6Address) {
						continue;
					}
					ip = ia.getHostAddress();
				}
			}
		} catch (SocketException e) {
			log.error("Get host IP address error.",e);
		}
		return ip;
	}
	
	/**
	 * 将文件进行zip压缩
	 * 压缩后的文件保存在源文件所在目录下,压缩文件名为源文件名去除后缀加上.zip
	 * 例如:源文件E:\message\test.xml,压缩后文件E:\message\test.zip
	 * @param srcFile 源文件File对象
	 * @return File 压缩后的目标文件
	 */
	public static File fileToZip(File srcFile) throws IOException{
		FileInputStream fin = null;
		File zipFile = null;
		ZipEntry entry = null;
		// 获取文件名
		String fileName = srcFile.getName();
		// 获取entry名称
		String entryName = fileName.substring(0, fileName.lastIndexOf("."));
		// 获取不包含后缀的文件名称
		fileName = fileName.substring(0, fileName.indexOf("."));
		// 获取文件所在路径
		String path = srcFile.getPath();
		path = path.substring(0, path.lastIndexOf(File.separator) + 1);
		try {
			fin = new FileInputStream(srcFile);
			zipFile = new File(path + fileName + ".zip");
			// 创建一个zip输出流来压缩数据并写入到zip文件 
			ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));
			// 做一个ZipEntry
			entry = new ZipEntry(entryName);
			// 存储项信息到压缩文件
			out.putNextEntry(entry);
			
			byte[] buffer = new byte[102400];
			int reader;
			while ((reader=fin.read(buffer)) > 0) {
				out.write(buffer, 0, reader);
			}
			out.closeEntry();
			fin.close();
			out.close();
		} catch (IOException e) {
			log.error("File [" + srcFile.getAbsolutePath() + "] compress to zip file error.",e);
			throw e;
		}
		return zipFile;
	}
	
	/**
	 * zip文件解压缩
	 * 将zip文件进行解压缩,解压缩后的文件保存到zip文件的同级目录中
	 * 
	 * @param srcFile zip文件
	 * @return 解压后的文件列表
	 */
	public static List<File> unzipFile(File srcFile) throws Exception{
		List<File> listFile = new ArrayList<File>();
		File targetFile = null;
		try {
			// 根据ZIP文件创建ZipFile对象
			ZipFile zipFile = new ZipFile(srcFile);
			ZipEntry entry = null;
			String entryName;
			String targetFileName;
			byte[] buffer = new byte[10240];
			int len = 0;
			// 获取ZIP文件里所有的entry
            Enumeration<?> entrys = zipFile.entries();
            // 遍历所有entry
            while(entrys.hasMoreElements()) {
            	entry = (ZipEntry)entrys.nextElement();
            	// 获得entry的名字
            	entryName =  entry.getName();
            	targetFileName = srcFile.getParent() + File.separator + entryName;
            	if (!entry.isDirectory()) {
            		targetFile = new File(targetFileName);
            		//打开文件输出流
                	FileOutputStream os = new FileOutputStream(targetFile);
                	//从ZipFile对象中打开entry的输入流
                	InputStream  is = zipFile.getInputStream(entry);
                	while ((len = is.read(buffer)) > 0){
                		os.write(buffer, 0, len);
                	}
                	//关闭流
                	os.close( );
                	is.close( );
                	listFile.add(targetFile);
            	}
            }
            zipFile.close();
		} catch (Exception e) {			
			log.error("File [" + srcFile.getAbsolutePath() + "] unzip error.", e);
			//add by rick 2011-07-07 文件在解压过程中失败,则删除部分已经解压的文件			
			try {
				if(null!=listFile && !listFile.isEmpty()){
					for (int i=0;i<listFile.size();i++) {
						File f = (File) listFile.get(i);
						f.delete();				}
				}
			} catch (Exception e2) {
				throw e2;
			}			
			throw e;
		}
		return listFile;
	}
	
	/**
	 * zip文件解压缩
	 * 将zip文件进行解压缩,解压缩后的文件保存到zip文件的同级目录中
	 * 
	 * @param srcFile zip文件
	 * @return 解压后的文件列表
	 */
	public static List<File> unzipFileNew(File srcFile) throws Exception{
		
		List<File> listFile = new ArrayList<File>();
		File targetFile = null;
		try {
			// 根据ZIP文件创建ZipFile对象
			ZipFile zipFile = new ZipFile(srcFile);
			ZipEntry entry = null;
			String entryName;
			String targetFileName;
			byte[] buffer = new byte[10];
			int len = 0;
			// 获取ZIP文件里所有的entry
            Enumeration<?> entrys = zipFile.entries();
            // 遍历所有entry
            while(entrys.hasMoreElements()) {
            	entry = (ZipEntry)entrys.nextElement();
            	// 获得entry的名字
            	entryName =  entry.getName();
            	targetFileName = srcFile.getParent() + File.separator + entryName;
            	if (!entry.isDirectory()) {
            		targetFile = new File(targetFileName);
            		//打开文件输出流
                	FileOutputStream os = new FileOutputStream(targetFile);
                	//从ZipFile对象中打开entry的输入流
                	InputStream  is = zipFile.getInputStream(entry);
//                	while ((len = is.read(buffer)) !=-1){
//                		os.write(buffer, 0, len);
//                	}
                	int ch = is.read(buffer, 0, 10);  
                    
                    while (ch != -1) {  
                    	os.write(buffer, 0, ch);  
                        ch = is.read(buffer, 0, 1024);  
                    }  
                	//关闭流
                	os.close( );
                	is.close( );
                	listFile.add(targetFile);
            	}
            }
            zipFile.close();
		} catch (Exception e) {			
			log.error("File [" + srcFile.getAbsolutePath() + "] unzip error.", e);
			//add by rick 2011-07-07 文件在解压过程中失败,则删除部分已经解压的文件			
			try {
				if(null!=listFile && !listFile.isEmpty()){
					for (int i=0;i<listFile.size();i++) {
						File f = (File) listFile.get(i);
						f.delete();				}
				}
			} catch (Exception e2) {
				throw e2;
			}			
			throw e;
		}
		return listFile;
	}
	
//	public void unzipFileIntoDirectory(File archive, File destinationDir) 
//    throws Exception {
//    final int BUFFER_SIZE = 1024;
//    BufferedOutputStream dest = null;
//    FileInputStream fis = new FileInputStream(archive);
//    ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
//    ZipEntry entry;
//    File destFile;
//    while ((entry = zis.getNextEntry()) != null) {
//        destFile = FilesystemUtils.combineFileNames(destinationDir, entry.getName());
//        if (entry.isDirectory()) {
//            destFile.mkdirs();
//            continue;
//        } else {
//            int count;
//            byte data[] = new byte[BUFFER_SIZE];
//            destFile.getParentFile().mkdirs();
//            FileOutputStream fos = new FileOutputStream(destFile);
//            dest = new BufferedOutputStream(fos, BUFFER_SIZE);
//            while ((count = zis.read(data, 0, BUFFER_SIZE)) != -1) {
//                dest.write(data, 0, count);
//            }
//            dest.flush();
//            dest.close();
//            fos.close();
//        }
//    }
//    zis.close();
//    fis.close();
//}

	
	/**
	 * 文件移动
	 * 从源文件移动到目标文件
	 * 
	 * @param src 源文件
	 * @param dst 目标文件
	 * @return 移动是否成功
	 */
	public static boolean moveFile(File src, File dst) {
		boolean result = true;
        try {
			if(src.getPath().equals(dst.getPath()))
			    return true;
			InputStream in = new FileInputStream(src);
			OutputStream out = new FileOutputStream(dst);
			byte[] buf = new byte[1024];
			int len;
			while ((len = in.read(buf)) > 0) {
			    out.write(buf, 0, len);
			}
			in.close();
			out.close();
			// 删除源文件
			src.delete();
		} catch (Exception e) {
			result = false;
			log.error("Move file " + src.getPath() + " to " + dst.getPath() + " error.",e);
		}
		return result;
    }
	
	public static String checkDateString14(String str) {
		String result = null;
		 //YYYYMMDDHHMISS 字符串只能为14位,多了截取,少了补0
//		if(!StringUtils.isEmpty(str)) {
		if(!str.equals("")) {
			if(str.length() > 14) {
				result = str.substring(0, 14);
			} else if(str.length() < 14) {
				int i = 14 - str.length();
				for (int j = 0; j < i; j++) {
					str += "0";
				}
				result = str;
			}
		}
		return result;
	}
	public static void main(String[] args) {
		//System.out.println(formatString("abc",6)+";");
		//System.out.println(formatString("12345678", 6));
		try {
			File f = new File("F:/test/t34/123.zip.bak");
			List<File> ls = Utils.unzipFile(f);
			System.out.println("F-->" + ls);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

 

改用ant zip进行解压缩代码如下:

import java.io.*; 

import org.apache.tools.zip.*; 
import java.util.Enumeration; 
/** 
*功能:zip压缩、解压(支持中文文件名) 
*说明:本程序通过使用Apache Ant里提供的zip工具org.apache.tools.zip实现了zip压缩和解压功能. 
*   解决了由于java.util.zip包不支持汉字的问题。 
*   使用java.util.zip包时,当zip文件中有名字为中文的文件时, 
*   就会出现异常:"Exception  in thread "main " java.lang.IllegalArgumentException  
*               at   java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:285) 
*注意: 
*   1、使用时把ant.jar放到classpath中,程序中使用import org.apache.tools.zip.*; 
*   2、Apache Ant 下载地址:[url]http://ant.apache.org/[/url] 
*   3、Ant ZIP API:[url]http://www.jajakarta.org/ant/ant-1.6.1/docs/mix/manual/api/org/apache/tools/zip/[/url] 
*   4、本程序使用Ant 1.7.1 中的ant.jar 
* 
*仅供编程学习参考. 
* 
*@author Winty 
*@date   2008-8-3 
*@Usage: 
*   压缩:java AntZip -zip "directoryName" 
*   解压:java AntZip -unzip "fileName.zip" 
*/ 

public class AntZip{ 
    private ZipFile         zipFile; 
    private ZipOutputStream zipOut;     //压缩Zip 
    private ZipEntry        zipEntry; 
    private static int      bufSize;    //size of bytes 
    private byte[]          buf; 
    private int             readedBytes; 
     
    public AntZip(){ 
        this(512); 
    } 

    public AntZip(int bufSize){ 
        this.bufSize = bufSize; 
        this.buf = new byte[this.bufSize]; 
    } 
     
    //压缩文件夹内的文件 
    public void doZip(String zipDirectory){//zipDirectoryPath:需要压缩的文件夹名 
        File file; 
        File zipDir; 

        zipDir = new File(zipDirectory); 
        String zipFileName = zipDir.getName() + ".zip";//压缩后生成的zip文件名 

        try{ 
            this.zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName))); 
            handleDir(zipDir , this.zipOut); 
            this.zipOut.close(); 
        }catch(IOException ioe){ 
            ioe.printStackTrace(); 
        } 
    } 

    //由doZip调用,递归完成目录文件读取 
    private void handleDir(File dir , ZipOutputStream zipOut)throws IOException{ 
        FileInputStream fileIn; 
        File[] files; 

        files = dir.listFiles(); 
     
        if(files.length == 0){//如果目录为空,则单独创建之. 
            //ZipEntry的isDirectory()方法中,目录以"/"结尾. 
            this.zipOut.putNextEntry(new ZipEntry(dir.toString() + "/")); 
            this.zipOut.closeEntry(); 
        } 
        else{//如果目录不为空,则分别处理目录和文件. 
            for(File fileName : files){ 
                //System.out.println(fileName); 

                if(fileName.isDirectory()){ 
                    handleDir(fileName , this.zipOut); 
                } 
                else{ 
                    fileIn = new FileInputStream(fileName); 
                    this.zipOut.putNextEntry(new ZipEntry(fileName.toString())); 

                    while((this.readedBytes = fileIn.read(this.buf))>0){ 
                        this.zipOut.write(this.buf , 0 , this.readedBytes); 
                    } 

                    this.zipOut.closeEntry(); 
                } 
            } 
        } 
    } 

    //解压指定zip文件 
    public void unZip(String unZipfileName){//unZipfileName需要解压的zip文件名 
        FileOutputStream fileOut; 
        File file; 
        InputStream inputStream; 
        File srcFile = new File(unZipfileName);
        try{ 
            this.zipFile = new ZipFile(unZipfileName); 

            for(Enumeration entries = this.zipFile.getEntries(); entries.hasMoreElements();){ 
                ZipEntry entry = (ZipEntry)entries.nextElement(); 

                String targetFileName = srcFile.getParent() + File.separator + entry.getName();
                file = new File(targetFileName); 
                if(entry.isDirectory()){ 
                    file.mkdirs(); 
                } 
                else{ 
                    //如果指定文件的目录不存在,则创建之. 
                    File parent = file.getParentFile(); 
                    if(!parent.exists()){ 
                        parent.mkdirs(); 
                    } 

                    inputStream = zipFile.getInputStream(entry); 

                    fileOut = new FileOutputStream(file); 
                    while(( this.readedBytes = inputStream.read(this.buf) ) > 0){ 
                        fileOut.write(this.buf , 0 , this.readedBytes ); 
                    } 
                    fileOut.close(); 

                    inputStream.close(); 
                }    
            } 
            this.zipFile.close(); 
        }catch(IOException ioe){ 
            ioe.printStackTrace(); 
        } 
    } 

    //设置缓冲区大小 
    public void setBufSize(int bufSize){ 
        this.bufSize = bufSize; 
    } 

    //测试AntZip类 
    public static void main(String[] args)throws Exception{ 
        if(args.length==2){ 
            String name = args[1]; 
            AntZip zip = new AntZip(); 

            if(args[0].equals("-zip")) 
                zip.doZip(name); 
            else if(args[0].equals("-unzip")) 
                zip.unZip(name); 
        } 
        else{ 
            System.out.println("Usage:"); 
            System.out.println("压缩:java AntZip -zip directoryName"); 
            System.out.println("解压:java AntZip -unzip fileName.zip"); 
            throw new Exception("Arguments error!"); 
        } 
    } 
}

 

ant zip测试类:

public class TestAntZip {

	/** 
	 * @Title: main 
	 * @Description: TODO
	 * @param @param args   
	 * @return void  
	 * @throws 
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		AntZip az = new AntZip();
		az.unZip("F:\\1234\\CN_MT2101_1p0_5304192444043_20160525103427898.zip");
	}

}

 ant zip需要下载ant.jar

分享到:
评论

相关推荐

    基于Java向zip压缩包追加文件

    在Java编程中,向现有的ZIP压缩包追加文件通常需要经过解压、修改、再压缩的步骤,因为标准的Java ZIP库(如`java.util.zip`包)并不直接支持追加到已存在的ZIP文件。本篇文章将深入探讨如何实现这个功能,主要关注...

    java加密解密zip压缩包

    为了实现ZIP文件的加密,我们需要依赖第三方库,例如Apache Commons Compress或者Java 7及以上版本引入的`java.nio.file`和`java.util.zip`中的`ZipFile`和`ZipEntry`类。 对于ZIP 2.0加密,Apache Commons ...

    java zip文件加密

    Java Zip文件加密是一种重要的安全措施,它允许程序员在创建或修改Zip文件时添加一层保护,以防止未经授权的访问。在Java中,我们可以使用内置的`java.util.zip`库来实现这个功能。本篇文章将深入探讨如何在Java中对...

    java 打zip包

    在Java编程语言中,创建ZIP压缩包是一项常见的任务,特别是在软件开发中,如构建Web应用程序。本资源提供了一种解决方案,解决了使用Java打zip包时可能会遇到的中文乱码和包含空文件的问题。以下是关于这个主题的...

    javazip压缩类

    JavaZip压缩类是Java编程语言中用于处理ZIP文件格式的核心工具,主要集中在java.util.zip包中。这个包提供了多种类和接口,使得开发者能够轻松地对数据进行压缩和解压缩,尤其是在开发需要处理大量数据的应用时,如...

    java读取zip文件

    在Java编程环境中,读取ZIP文件是一项常见的任务,特别是在处理归档数据或打包资源时。以下将详细讲解如何使用Java来实现这一功能。 首先,Java提供了`java.util.zip`包,该包包含了处理ZIP文件所需的类,如`...

    javazip

    Java Zip是Java编程语言中处理压缩文件的一种技术,主要用于创建、读取和更新ZIP格式的文件。ZIP是一种广泛使用的文件存档格式,它允许将多个文件和目录打包成一个单一的压缩文件,便于存储和传输。在Java中,我们...

    基于java的开发源码-Cubic java应用诊断工具.zip

    基于java的开发源码-Cubic java应用诊断工具.zip 基于java的开发源码-Cubic java应用诊断工具.zip 基于java的开发源码-Cubic java应用诊断工具.zip 基于java的开发源码-Cubic java应用诊断工具.zip 基于java的开发...

    java 操作Zip文件(压缩、解压、加密).zip

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    JAVA解压ZIP多层目录文件(需ant.jar

    ### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...

    java zip rar(区分有无密码的RAR文件) gz ftp工具类

    在Java编程环境中,处理压缩文件和网络传输是常见的任务,特别是在开发企业级应用程序时。本文将详细介绍标题和描述中提到的几个关键知识点:Java中的zip、rar(包括处理带密码的RAR文件)、gz压缩,以及FTP工具类的...

    java zip解压缩

    本文将详细讲解如何使用Java进行Zip文件的压缩与解压缩操作,并结合给定的标签"源码"和"工具"来探讨实际应用场景。 一、Java Zip压缩 1. 使用`ZipOutputStream`类进行压缩: `ZipOutputStream`是Java提供的用于...

    Java zip 压缩/解压源码

    在Java编程语言中,`zip`格式是一种常用的文件压缩方式,用于将多个文件打包成一个单一的可压缩文件。这个`Java zip 压缩/解压源码`的资源提供了一个简洁易用的API,使得开发者能够方便地对文件进行压缩和解压缩操作...

    Java Web应用开发课程设计-vue+springboot+MySQL宾馆客房预订系统源码.zip

    Java Web应用开发课程设计-vue+springboot+MySQL宾馆客房预订系统源码.zipJava Web应用开发课程设计-vue+springboot+MySQL宾馆客房预订系统源码.zipJava Web应用开发课程设计-vue+springboot+MySQL宾馆客房预订系统...

    javajdk.zip

    本压缩包"javajdk.zip"包含了Java EE(Java企业版)和Java ME(Java Micro Edition)的最新版本JDK,这两个版本是Java在不同应用场景下的扩展。 Java EE是用于开发企业级应用程序的平台,它提供了服务器端的组件...

    QTjava.zip

    QTjava.zip 可能是为了解决在 Mac OS 上运行 Java 应用程序时,与 Qt 和 QuickTime 技术交互的问题。开发者可能需要这个包来扩展 Java 的功能,例如实现 Qt 的图形界面功能或者利用 QuickTime 处理多媒体内容。在...

    java多文件压缩成zip文件并实现下载

    在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...

    java zip and unzip

    ### Java Zip 和 Unzip 技术详解 ...通过以上示例代码和讲解,我们不仅了解了 Java 如何实现文件的压缩与解压缩,还掌握了实际应用中需要注意的一些细节。这对于日常开发工作来说是非常有帮助的。

    Java压缩解压ZIP之Zip4j

    Java中的压缩和解压操作是常见的文件处理任务,Zip4j是一个非常实用的Java库,专为处理ZIP文件而设计。这个库提供了丰富的API,使得开发者可以方便地...通过实践,可以加深对Zip4j的理解,并将其应用到自己的项目中。

Global site tag (gtag.js) - Google Analytics