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();
}
}
}