📄 zipdownloadprovider.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 + -