java压缩文件参考:http://www.jiajiajia.club/blog/artical/1en1qpemej45/499
一、pom
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.2.3</version>
</dependency>
二、java代码
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.model.OSSObject;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class OssDownload {
public static void main(String[] args) {
String file = "D://data//downForZip.zip";
List<String> list = new ArrayList();
list.add("1.png");
list.add("2.png");
downForZip(list,file);
}
/**
* 批量下载为zip
* @param keyList oss文件路径集合
* @param fileName 下载出来的zip文件名(一般以合同名命名) 如:测试合同,zip
*/
public static void downForZip(List<String> keyList, String fileName){
File zipFile = null;
try {
zipFile = File.createTempFile("test", ".zip");
FileOutputStream f = new FileOutputStream(zipFile);
CheckedOutputStream csum = new CheckedOutputStream(f, new Adler32());
ZipOutputStream zos = new ZipOutputStream(csum);
OSSClient ossClient= new OSSClient(
"endpoint",
"accessKeyId",
"secretAccessKey");
for (String ossFile : keyList) {
OSSObject ossObject = ossClient.getObject("bucketName", ossFile);
InputStream inputStream = ossObject.getObjectContent();
String name=ossFile.substring(ossFile.lastIndexOf("/")+1);
zos.putNextEntry(new ZipEntry(name));
int bytesRead = 0;
while ((bytesRead = inputStream.read()) != -1) {
zos.write(bytesRead);
}
inputStream.close();
zos.closeEntry();
}
zos.close();
FileInputStream fis = new FileInputStream(zipFile);
BufferedInputStream buff = new BufferedInputStream(fis);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(fileName)));
byte[] car = new byte[1024];
int l = 0;
while (l < zipFile.length()) {
int j = buff.read(car, 0, 1024);
l += j;
out.write(car, 0, j);
}
fis.close();
buff.close();
out.close();
ossClient.shutdown();
zipFile.delete();
} catch (IOException e1) {
e1.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
}