Java -- Ftp 上传工具类

1、文件内

package com.sample.common.utils;

import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;

import java.io.*;

public class FtpUtils {

    private static final String FTP_HOME = "/home/ftp";

    /**
     * 连接信息配置
     */
    private String host;
    private int port;
    private String username;
    private String password;

    private FTPClient client;

    public FtpUtils(String host, int port, String username, String password) {
        this.host = host;
        this.port = port;
        this.username = username;
        this.password = password;

        openClient();
    }

    /**
     * 打开连接
     */
    private void openClient(){
        try {
            client = new FTPClient();
            //1.设置连接属性
            client.setConnectTimeout(5000);
            client.setControlEncoding("UTF-8");
//            client.enterLocalActiveMode();

            //2.使用 host 和 port 连接服务器,并登陆
            client.connect(this.host, this.port);
            client.login(this.username, this.password);

            //3.检查连接状态
            if(!FTPReply.isPositiveCompletion(client.getReplyCode())){
                System.out.println("ftp 连接失败!");
                client.disconnect();
            }else{
                System.out.println("ftp 连接成功!");
            }
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("ftp 连接异常!");
        }
    }

    /**
     * 关闭连接
     */
    public void closeClient(){
        try {
            client.logout();
        }catch (Exception e){
            System.out.println("ftp 关闭失败!");
        }finally {
            if(client.isConnected()){
                try {
                    client.disconnect();
                } catch (IOException e) {
                    System.out.println("ftp 关闭失败!");
                }
            }
        }
    }

    /**
     * 下载文件
     * @param serverPath 文件处于服务器的路径
     * @param savePath   文件保存的本地位置
     * @param fileName   文件的名称
     */
    public boolean downloadFile(String serverPath, String savePath, String fileName){
        boolean downFlag = false;
        try {
            //1.开启被动模式
            client.enterLocalPassiveMode();
            //2.切换目录
            client.changeWorkingDirectory(serverPath);

            //3.查找文件
            for(FTPFile file:client.listFiles()){
                if(fileName.equals(file.getName())){
                    //4.保存路径
                    OutputStream saveFile = new FileOutputStream(new File(savePath + File.separator + fileName));
                    client.retrieveFile(new String(file.getName().getBytes("UTF-8"),"ISO-8859-1"), saveFile);
                    downFlag = true;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("下载失败!");
        }
        return downFlag;
    }

    /**
     * 上传文件
     * @param serverPath 文件处于服务器的路径
     * @param filePath   文件保存的本地位置
     */
    public boolean uploadFile(String serverPath, String filePath){
        boolean uploadFlag = false;
        try {
            //1.开启被动模式
            client.enterLocalPassiveMode();
            //2.使用二进制传输方式
            client.setFileType(FTPClient.BINARY_FILE_TYPE);

            //3.创建文件夹
            if(!client.changeWorkingDirectory(serverPath)){
                client.makeDirectory(serverPath);
                client.changeWorkingDirectory(serverPath);
            }

            //4.上传文件
            File file = new File(filePath);
            return client.storeFile(serverPath + file.getName(), new FileInputStream(file));
        }catch (Exception e){
            e.printStackTrace();
            System.out.println("上传文件失败!");
        }
        return uploadFlag;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public static void main(String[] args) {
        FtpUtils ftp = new FtpUtils("", 21, "", "");
//        boolean flag = ftp.uploadFile(FTP_HOME+"/images/", "F:/ftp/files/temp.jpg");
        boolean flag = ftp.downloadFile(FTP_HOME+"/images/", "F:/", "temp.jpg");
        System.out.println(flag);
    }
}

猜你喜欢

转载自blog.csdn.net/sky_eyeland/article/details/93883054