JAVA中压缩与解压缩

以压缩Zip文件为例。主要是通过ZipOutputStream类实现。

import java.io.*;
import java.util.*;
import java.text.*;
import java.util.zip.*;

//压缩一个文件
//压缩一个文件夹

public class Hello
{
    public static void main(String[] args)throws Exception
    {
        final int BUFFER_LENGTH = 1024*1024;
        byte[] buffer = new byte[BUFFER_LENGTH];
        File sourceFile = new File("D:\\AsmTools");
        File zipFile = new File("d:\\"+getFileName(sourceFile.getName())+".zip");
        InputStream is = null;
        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
        int len = 0;
        File[] files = sourceFile.listFiles();
        for(File file : files)
        {
            is = new FileInputStream(file);
            zipOut.putNextEntry(new ZipEntry(file.getName()));
            while((len= is.read(buffer,0,BUFFER_LENGTH))>0)
            {
                zipOut.write(buffer,0,len);
            }

            is.close();
        }
        zipOut.close();
    }

    public static String getFileName(String fileName)
    {
        String retVal;
        int lastIndex = fileName.lastIndexOf(".");
        if(lastIndex < 0)
            retVal = fileName;
        else
            retVal = fileName.substring(0,lastIndex);
        return retVal;
    }
}

解压缩主要使用ZipFile类和ZipOutputStream类。

ZipOutputStream 获取压缩文件中的每个ZipEntry,然后ZipFile通过ZipEntry拿到输入流。

import java.io.*;
import java.util.*;
import java.text.*;
import java.util.zip.*;

//压缩一个文件
//压缩一个文件夹

public class Hello
{
    public static void main(String[] args)throws Exception
    {
        final int BUFFER_LENGTH = 1024*1024;
        File sourceZipFile = new File("d:\\AsmTools.zip");
        File unzippedFolder = new File("d:\\"+getFileName(sourceZipFile.getName()));
        ZipInputStream zipInput = new ZipInputStream(new FileInputStream(sourceZipFile));
        ZipFile zipFile = new ZipFile(sourceZipFile);
        ZipEntry tempZipEntry = null;
        InputStream is = null;
        OutputStream os = null;
        byte[] buffer = new byte[BUFFER_LENGTH];
        int bytesReaded = 0;
        if(!unzippedFolder.exists())
        {
            unzippedFolder.mkdir();
        }

        while((tempZipEntry = zipInput.getNextEntry()) != null)
        {
            is = zipFile.getInputStream(tempZipEntry);
            os = new FileOutputStream("d:\\" + unzippedFolder.getName()+"\\"+tempZipEntry.getName());
            System.out.println("正在解压:" + tempZipEntry.getName());
            while((bytesReaded = is.read(buffer,0,BUFFER_LENGTH))>0)
            {
                os.write(buffer,0,bytesReaded);
            }

            is.close();
            os.close();
        }

        zipInput.close();
    }

    public static String getFileName(String fileName)
    {
        String retVal;
        int lastIndex = fileName.lastIndexOf(".");
        if(lastIndex < 0)
            retVal = fileName;
        else
            retVal = fileName.substring(0,lastIndex);

        return retVal;
    }
}
时间: 2024-10-21 15:01:58

JAVA中压缩与解压缩的相关文章

在内存中压缩及解压缩

在内存中压缩及解压缩 //引入头文件#import <zlib.h> //引入libz动态库 NSString *str = @"zlib compress and uncompress test\[email protected]\n2012-11-05\n"; NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding]; Bytef *text = (Bytef*)[data bytes]; uLong tle

linux中压缩与解压缩命令小结

linux中压缩与解压操作非常常见,其命令参数也非常的多,这里只介绍最经常用的带打包文件的几种压缩和解压方式和几个最常用的参数. 现在最常用的压缩和解压工具是gzip和bzip2,这两种工具不能相互解压对方压缩的文件.在linux中其实没有后缀名这一说法,但是为了方便用户解压文件时方便,所以在压缩的时候往往使用不同的后缀名以区分是使用的那个工具,一般使用gzip压缩的文件后缀名是.gz,用bzip2压缩的文件取名为.bz2,而打包文件一般使用tar工具,所以压缩后再打包的文件后缀名一般是.tar

java 文件压缩及解压缩

java操作windows命令(Rar.exe)执行文件压缩 // String srcPath = "D:\\test";// 被压缩文件夹 String srcPath = "D:\\test.txt";// 被压缩文件 String destPath = "D:\\test.rar";// 压缩后文件 String rarexePath = "C:\\Program Files\\WinRAR\\Rar.exe"; //

【原创】java实现压缩、解压缩的常见问题Memo

国庆假期,宅呀~ 无意中看到一篇java压缩算法的文章,就顺便度娘了一些相关文章来看. 本来想深入研究一下算法,但是,毕竟是假期,哪有那份心思啊,就实际应用简单Memo一下吧. 1. 中文乱码问题 其实这是无意中看到的,度娘一下漫天都是,看来各位程序猿还是以务实的应用为多啊. 度娘里,99%的帖子都是说用 Ant中的 org.apache.tools.zip.*  来代替 java.util.zip.* 这种办法来解决中文乱码问题.究其原因是,jdk中写死了UTF-8编码,而操作系统的文件编码如

java 版本压缩、解压缩zip

import java.io.*; import java.util.*; import java.util.zip.ZipOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; public class FileMgr { public FileMgr() { } /** * 压缩文件 * @param srcfile File[] 需要压缩的文件列表 * @param zipfile File 压缩

java GZIP压缩与解压缩

1.GZIP压缩 public static byte[] compress(String str, String encoding) { if (str == null || str.length() == 0) { return null; } ByteArrayOutputStream out = new ByteArrayOutputStream(); GZIPOutputStream gzip; try { gzip = new GZIPOutputStream(out); gzip.

JAVA,使用ant-1.6.5,压缩、解压缩辅助类代码

有的时候,需要做文件的压缩.解压缩. java自身提供了已压缩,解压缩的原生类库.不过有开源代码的话,我一般是选择使用开源类库. 下面就贴一下,我使用ant-1.6.5的zip压缩.解压缩的代码吧. ZipUtil.java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStr

JAVA UI 实现ZIP的压缩与解压缩

压缩与解压缩代码 package ZIP; import java.io.*;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipOutputStream; public class Zipun {    public static void zip(String srcRootDir,File file,ZipOutputS

利用JAVA API函数实现数据的压缩与解压缩

综述 许多信息资料都或多或少的包含一些多余的数据.通常会导致在客户端与服务器之间,应用程序与计算机之间极大的数据传输量.最常见的解决数据存储和信息传送的方法是安装额外的存储设备和扩展现有的通讯能力.这样做是可以的,但无疑会增加组织的运作成本.一种有效的解决数据存储与信息传输的方法是通过更有效率的代码来存储数据.这篇文章简要的介绍了数据的压缩与解压缩,并展示了用java.util.zip包来实现数据的压缩与解压缩是多么的方便与高效. 当然用诸如WinZip,gzip,和Java压缩(或jar)之类