import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipMultiFile {
public static void main(String[] args) throws FileNotFoundException {
File[] srcFiles = {new File("C:/Users/Lenovo/Desktop/1.jpg"), new File("C:/Users/Lenovo/Desktop/123.pdf")};
File zipFile = new File("C:/Users/Lenovo/Desktop/ZipFile.zip");
// 调用压缩方法
zipFiles(srcFiles, zipFile);
}
/**
* 压缩文件
* @param srcFiles
* @param zipFile
*/
public static void zipFiles(File[] srcFiles, File zipFile) {
FileOutputStream fileOutputStream = null;
ZipOutputStream zipOutputStream = null;
FileInputStream fileInputStream = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
fileOutputStream = new FileOutputStream(zipFile);
zipOutputStream = new ZipOutputStream(baos);
for (int i = 0; i < srcFiles.length; i++) {
fileInputStream = new FileInputStream(srcFiles[i]);
ZipEntry zipEntry = new ZipEntry(srcFiles[i].getName());
zipOutputStream.putNextEntry(zipEntry);
int len;
byte[] buffer = new byte[1024];
while ((len = fileInputStream.read(buffer)) > 0) {
zipOutputStream.write(buffer, 0, len);
}
}
zipOutputStream.flush();
zipOutputStream.closeEntry();
zipOutputStream.close();
fileInputStream.close();
fileOutputStream.close();
ByteArrayInputStream swapStream = new ByteArrayInputStream(baos.toByteArray());
InputStream inputStream = swapStream;
FTPClient ftpClient = new FTPClient();
connectionFTP(ftpClient, inputStream, "test");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* connection FTP
* @param ftpClient
* @param zip
* @param name
* @return
*/
public static boolean connectionFTP(FTPClient ftpClient, InputStream zip, String name) {
boolean isUpload = false;
try {
ftpClient.connect("192.168.1.1");
ftpClient.login("root", "root");
//获取服务器返回的状态码
int reply = ftpClient.getReplyCode();
System.out.println(reply);
//如果reply返回230就算成功了,如果返回530密码用户名错误或当前用户无权限下面有详细的解释。
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
return false;
}
//设置文件上传类型
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
isUpload = ftpClient.storeFile(name + ".zip", zip);
} catch (Exception e) {
e.printStackTrace();
}
return isUpload;
}
}