Java 代碼實現FTP上傳下載apache版本示例

maven引包:

<dependency>
            <groupId>net.butfly</groupId>
            <artifactId>albacore-test</artifactId>
            <version>1.1.1</version>
            <scope>test</scope>

 </dependency>

java代碼:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.io.IOUtils;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

/**
 * @ClassName: FtpDemo
 * @Description: FTP上傳下載示例
 * @author: songy
 * @date: 2020年5月27日 下午4:08:58
 */
public class FtpDemo {
    /**
     * FTP服務地址
     */
    private final static String FTP_SERVER = "127.0.0.1";
    /**
     * FTP的端口
     */
    private final static int FTP_PORT = 21;
    /**
     * FTP用戶名
     */
    private final static String FTP_USER = "ftptest";
    /**
     * FTP密碼
     */
    private final static String FTP_PASSWD = "123456";
    /**
     * ftp對象
     */
    FTPClient ftpClient = null;

    /**
     * @Title: open
     * @Description: 連接FTP服務器
     * @author songy
     * @date 2020年5月27日 下午4:28:02
     * @return: boolean
     */
    public boolean open() {
        if (ftpClient != null && ftpClient.isConnected()) {
            return true;
        }
        try {
            ftpClient = new FTPClient();
            ftpClient.connect(FTP_SERVER, FTP_PORT);
            ftpClient.login(FTP_USER, FTP_PASSWD);
            int reply = ftpClient.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftpClient.logout();
                ftpClient.disconnect();
            }
            //設置爲被動模式
            ftpClient.enterLocalPassiveMode();
            ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
        return true;
    }

    
    /** 
     * @Title: getFile 
     * @Description: 下載遠程文件到本地
     * @param ftpDirectoryAndFileName
     * @param localDirectoryAndFileName
     * @author songy  
     * @date 2020年5月27日 下午5:27:13
     * @return: boolean
     */
    public boolean getFile(String ftpDirectoryAndFileName,String localDirectoryAndFileName) {
        if (!ftpClient.isConnected()) {
            return false;
        }
        FileOutputStream outputStream = null;
        try {
            String fileName = ftpDirectoryAndFileName.substring(ftpDirectoryAndFileName.lastIndexOf("/") + 1);
            outputStream = new FileOutputStream(localDirectoryAndFileName);
            ftpClient.retrieveFile(new String(fileName.getBytes("UTF-8"), "iso-8859-1"),outputStream);
            outputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            IOUtils.closeQuietly(outputStream);
        }
        return true;
    }

   /**
     * @title: FtpUtil.java
     * @date: 2020年5月31日 下午5:56:21
     * @Description: 上傳文件到服務器
     * @author: songy
     * @param ftpFileName
     * @param inputStream
     * @return: boolean
     */
    public boolean putFile(String ftpFileName,InputStream inputStream) {
        if (!ftpClient.isConnected()) {
            return false;
        }
        if (ftpClient != null) {
            try {
                //這裏千萬不要設置成1024,否則你會慢的哭出來,網上都是騙人的
                ftpClient.setBufferSize(1024*1024);
                ftpClient.setControlEncoding("UTF-8");
                // 設置文件類型(二進制)
                ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
                // 上傳
                return ftpClient.storeFile(new String(ftpFileName.getBytes("GBK"), "iso-8859-1"), inputStream);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                IOUtils.closeQuietly(inputStream);
            }
        }
        return true;
    }
    
    /** 
     * @Title: makeDirectory 
     * @Description: 創建文件夾
     * @param directory 文件名
     * @author songy  
     * @date 2020年5月28日 下午5:20:15
     * @return: void
     */
    public void makeDirectory(String directory) {
        try {
            if (!ftpClient.changeWorkingDirectory(directory)) {
                ftpClient.makeDirectory(directory);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章