使用apache的commons-net
库。
导入依赖
<dependency>
<groupId>commons-net</groupId>
<artifactId>commons-net</artifactId>
<version>3.7.2</version>
</dependency>
Ftp工具类
package ftp;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
/**
* @author Qi
* @date 2020/12/9 15:17
**/
public class FtpUtil {
static FTPClient ftpClient;
/**
* 获取ftp客户端
*
* @param host 地址
* @param port 端口
* @param username 用户名
* @param password 密码
* @return
* @throws IOException
*/
public static FTPClient getFtpClient(String host, int port, String username, String password) throws IOException {
if (ftpClient == null) {
ftpClient = new FTPClient();
ftpClient.setControlEncoding("GBK");
ftpClient.connect(host, port);
ftpClient.login(username, password);// 登录
int reply = ftpClient.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftpClient.disconnect();
return null;
}
}
return ftpClient;
}
/**
* @param ftpClient ftp客户端
* @param file 文件
* @param path 上传路径
* @return
* @throws IOException
*/
public static boolean uploadFileToFtp(FTPClient ftpClient, File file, String path) throws IOException {
if (ftpClient == null) return false;
ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.makeDirectory(path);
ftpClient.changeWorkingDirectory(path);
return ftpClient.storeFile(file.getName(), new FileInputStream(file));
}
public static void disconnectFtp(FTPClient ftpClient) throws IOException {
ftpClient.disconnect();
}
public static void main(String[] args) throws IOException {
FTPClient ftpClient = getFtpClient("192.168.1.xx", 21, "xxx", "xxxx");
boolean result = uploadFileToFtp(ftpClient, new File("C:\\Users\\Administrator\\Desktop\\xx.png"), "datas");
System.out.println(result);
disconnectFtp(ftpClient);
}
}
(完)