⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zipdownloadprovider.java

📁 基于Ajax的WebOS————PhoneShow案例
💻 JAVA
字号:
package com.cownew.phoneshow.framework.common;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import nextapp.echo2.app.filetransfer.DownloadProvider;

import org.apache.commons.io.IOUtils;

/**
 * 将文件files保存到压缩流中供下载,文件名由子类决定
 * @author 杨中科
 * @version 1.00, 2007-7-2 下午11:16:06
 */
public class ZipDownloadProvider implements DownloadProvider
{
	private File[] files;

	private String fileName;

	/**
	 * 构造压缩文件提供者
	 * @param files 待添加到压缩包中的所有文件
	 * @param fileName 压缩完成以后的压缩文件的文件名
	 */
	public ZipDownloadProvider(File[] files, String fileName)
	{
		super();
		this.files = files;
		this.fileName = fileName;
	}

	public String getFileName()
	{
		return fileName;
	}

	public String getContentType()
	{
		return "application/x-zip-compressed";
	}

	public int getSize()
	{
		return -1;
	}

	public void writeFile(OutputStream os) throws IOException
	{
		// 创建ZIP输出流
		ZipOutputStream zipOutStream = new ZipOutputStream(os);
		try
		{
			for (int i = 0, n = files.length; i < n; i++)
			{
				// 将每个文件依次添加到输出流中
				addFile(zipOutStream, files[i]);
			}

		} finally
		{
			IOUtils.closeQuietly(zipOutStream);
		}
	}

	private void addFile(ZipOutputStream zipOutStream, File file)
			throws FileNotFoundException, IOException
	{
		// 创建一个文件入口,入口的名字为文件名
		zipOutStream.putNextEntry(new ZipEntry(file.getName()));
		// 打开文件流
		FileInputStream fis = new FileInputStream(file);
		try
		{
			int nNumber;
			byte[] buffer = new byte[1024];
			// 将文件以1024byte为单位拷贝到ZIP输出流中
			while ((nNumber = fis.read(buffer)) != -1)
			{
				zipOutStream.write(buffer, 0, nNumber);
			}
		} finally
		{
			IOUtils.closeQuietly(fis);
		}
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -