`
SuperCustomer
  • 浏览: 110116 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java文件压缩解压

阅读更多

1、用java.util.zip下的工具压缩

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class UtilZip {

	public static void main(String[] args) throws Exception{
		
		String srcFileName="D:/mail.eml";
		String zipFileName="D:/mail.zip";
		
		try {
			zipFile(srcFileName,zipFileName);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void zipFile(String srcFileName,String zipFileName) throws Exception{
		
		FileInputStream fis=null;
		ZipOutputStream zos=null;
		
		File srcFile=new File(srcFileName);
		
		fis=new FileInputStream(srcFile);
		
		zos=new ZipOutputStream(new FileOutputStream(new File(zipFileName)));
		zos.putNextEntry(new ZipEntry(srcFile.getName()));
		
		byte[] buffer=new byte[4028];
		int readed=0;
		while((readed=fis.read(buffer))!=-1){
			zos.write(buffer,0, readed);
		}
		//这里一定要关闭流,否则压缩文件会损坏
		zos.closeEntry();
		zos.close();
		fis.close();
	}
	
}


2、用ant.jar包里面的工具压缩

import java.io.*;   

import org.apache.tools.zip.ZipOutputStream;   

public class AntZip {   
	   
    public static void main(String arg[]) {  
    	
        String srcFilePath = new String("D:/邮件");   
        String outFilename = new String("D:/mail.rar");   
        
        AntZip.zipFileByAnt(srcFilePath, outFilename);   
        
    } 
    
    public static void zipFileByAnt(String srcFilePath,String zipFileName) {   
    	
        try {   
            File srcPath = new File(srcFilePath);   
            int fileCount = srcPath.listFiles().length;   
            String[] filenames = new String[fileCount];   
            byte[] buffer = new byte[1024];   
            File[] files = srcPath.listFiles();   
            for (int i = 0; i < fileCount; i++) {   
                filenames[i] = srcPath.getPath() + File.separator + files[i].getName();   
            } 
            
            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));   
            out.setEncoding("UTF-8");
            
            FileInputStream fis=null;
            for (int i = 0; i < filenames.length; i++) {   
                fis = new FileInputStream(filenames[i]);   
                out.putNextEntry(new org.apache.tools.zip.ZipEntry(files[i].getName()));   
                int readed;   
                while ((readed = fis.read(buffer)) > 0) {   
                    out.write(buffer, 0, readed);   
                }     
            }  
            out.closeEntry();
            out.close();
            fis.close();
        } catch (Exception e) {   
            e.printStackTrace();   
        }   
    }   
      
}  

 

3、压缩文件

package jp.com.syspro.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

public class ZipFile {

	public static void main(String[] args) {
		zip("D:/Temp/DWR与界面开发", "D:/Temp/DWR与界面开发.zip");
	}

	public static void zip(String srcFile){
		zip(srcFile,"");
	}
	
	public static void zip(String srcFile, String zipFile) {
		File src = new File(srcFile);
		if (src.exists()) {
			// 压缩文件不存在时,压缩到当前目录
			if ("".equals(zipFile) || zipFile == null) {
				if (src.isDirectory()) {
					zipFile = srcFile + ".zip";
				} else {
					zipFile = srcFile.split("\\.")[0] + ".zip";
				}
			} else {
				if (!zipFile.contains(srcFile)) {
					File zip = new File(zipFile);
					if (!zip.getParentFile().exists()) {
						zip.getParentFile().mkdirs();
					}
				} else {
					// 压缩文件在被压缩的文件夹里面时,压缩到当前目录
					zipFile = srcFile + ".zip";
				}
			}
			zip(src, zipFile);
		}
	}

	public static void zip(File file, String zipFile) {
		try {
			FileOutputStream fos = new FileOutputStream(zipFile);
			ZipOutputStream zos = new ZipOutputStream(fos);
			zip(zos, file, "");
			zos.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void zip(ZipOutputStream zos, File file, String base) {
		zos.setEncoding("UTF-8");
		if (file.isDirectory()) {
			File[] files = file.listFiles();
			try {
				zos.putNextEntry(new ZipEntry(base + "/"));
				base = base.length() == 0 ? "" : base + "/";
				for (int i = 0; i < files.length; i++) {
					zip(zos, files[i], base + files[i].getName());
				}
			} catch (IOException e) {
				e.printStackTrace();
			}
		} else {
			try {
				zos.putNextEntry(new ZipEntry(base));
				FileInputStream fis = new FileInputStream(file);
				int readed = 0;
				while ((readed = fis.read()) != -1) {
					zos.write(readed);
				}
				zos.flush();
				fis.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}
 
分享到:
评论

相关推荐

    JAVA压缩解压JAVA压缩解压

    JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压

    实现java文件压缩与解压

    ### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...

    java 中 zip压缩文件解压工具类

    在Java编程环境中,处理文件压缩和解压缩是常见的任务,特别是在构建可执行的JAR包或者处理数据传输时。本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们...

    java 解压,压缩linux GZ压缩文件

    GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ文件的压缩和解压缩操作。 在给出的代码中,有两个主要的方法:`testGzipOutput()`用于解压GZ...

    JAVA文件压缩与解压缩实践(源代码+论文)

    综上所述,这个实践项目涵盖了Java文件压缩与解压缩的核心技术,是学习和理解Java I/O和压缩库的宝贵资源。通过阅读源代码和论文,开发者不仅可以学习如何在Java中进行文件压缩,还能了解到如何将这些技术应用于实际...

    Java压缩及解压tar、tar.z格式文件

    Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载

    java ftp上传 下载 文件压缩解压

    这篇博客“java ftp上传 下载 文件压缩解压”很可能是关于如何使用Java实现FTP文件上传、下载以及文件的压缩与解压功能。下面我们将深入探讨这些知识点。 首先,FTP上传和下载是Java中常见的任务,通常通过`java...

    rar文件压缩解压(java)

    总结,Java中处理RAR文件压缩和解压需要借助第三方库,如Apache Commons Compress或jRar。选择哪种库取决于你的具体需求,如对RAR5格式的支持、性能优化等。在实现过程中,需要了解并掌握这些库的API,以及如何正确...

    java压缩解压文件

    java压缩解压文件

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    在Java编程语言中,文件的压缩与解压缩是常见的操作,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本实践主要关注如何使用Java来处理ZIP格式的压缩文件,以下将详细介绍相关知识点。 1. **Java档案API...

    java 文件zip 压缩与解压

    java 文件zip 压缩与解压 可以直接调用

    java操作压缩文件和解压文件实例代码(经测试)

    虽然Ant本身不是直接用于文件压缩,但它包含的`ZipTask`和`UnzipTask`可以方便地在Ant脚本中进行文件压缩和解压。如果`ZipFileList.java`使用了Ant的功能,那么可能通过`org.apache.tools.ant.types.FileSet`选择要...

    java解压zip压缩文件

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

    JAVA源码Java用GZIP压缩解压文件JAVA源码Java用GZIP压缩解压文件

    java,JAVA源码Java用GZIP压缩解压文件JAVA源码Java用GZIP压缩解压文件

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    在Java编程环境中,处理文件压缩和解压任务是常见的需求,尤其在数据传输或存储时。ZIP文件格式因其广泛支持和高效性而被广泛应用。本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java....

    Java用GZIP压缩解压文件源码

    在Java编程语言中,GZIP是一种常用的文件压缩格式,...了解并掌握这些基础知识对于进行Java文件处理和数据传输是非常重要的。同时,根据项目需求,你可能还需要考虑其他优化和错误处理策略,以确保代码的健壮性和效率。

    java自带压缩方式的性能比较

    通过提供的代码文件`CompressTestMain.java`、`GzipUtils.java`和`ZipUtils.java`,我们可以推测作者可能构建了一个测试环境,比较了Gzip和Zip压缩算法在实际操作中的性能差异。 首先,让我们了解Gzip和Zip的基本...

    java 压缩/解压 .zip/.rar/.tar 文件

    在Java编程中,处理文件的压缩和解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java...同时,处理文件压缩和解压缩时要注意错误处理和资源管理,避免内存泄漏和文件损坏等问题。

    java获取压缩文件的名称并解压

    在Java编程中,处理压缩文件,如ZIP格式的文件,是一项常见的任务。本文将深入探讨如何使用Java来获取ZIP文件的名称以及如何高效地解压缩这些文件,特别是通过多线程来提高性能。 首先,我们需要引入Java的内置库`...

Global site tag (gtag.js) - Google Analytics