java 实现文件压缩后上床ftp服务器


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;
    }
}
上一篇:Springboot 通过Ftp协议下载文件,并在Vue平台上显示其内容


下一篇:java 从ftp服务器获取图片并转化为base64