在尝试压缩和压缩多个文件时,如何使用InputStream进行压缩并返回为InputStream?

时间:2014-04-23 17:30:27

标签: java io zip

我有一个excel文件,我想作为电子邮件中的附件以及其他几个文本文件发送,但我想为了大小原因压缩这些文件。我将如何使用InputStream并将其作为InputStream返回?非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码创建Zip文件。

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

public class ZipFileTest
{   
    public static void main( String[] args )
    {
        byte[] buffer = new byte[1024];

        try{

            FileOutputStream fos = new FileOutputStream("C:\\MyFile.zip");
            ZipOutputStream zos = new ZipOutputStream(fos);
            ZipEntry ze= new ZipEntry("spy.log");
            zos.putNextEntry(ze);
            FileInputStream in = new FileInputStream("C:\\spy.log");

            int len;
            while ((len = in.read(buffer)) > 0) {
                zos.write(buffer, 0, len);
            }

            in.close();
            zos.closeEntry();

            //remember close it
            zos.close();

            System.out.println("Done");

        }catch(IOException ex){
           ex.printStackTrace();
        }
    }
}