前言
最近考虑写一个类似 Multicraft 的网站应用程序,其中的FTP的实现让我一直在考虑实现手段,经过自己的查阅资料和测试特此写下该文章!
开发环境
代码示例
FTPClient.java
package cn.marinda.rcontest.ftp;
import org.apache.ftpserver.FtpServer;
import org.apache.ftpserver.FtpServerFactory;
import org.apache.ftpserver.ftplet.Authority;
import org.apache.ftpserver.listener.ListenerFactory;
import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;
import org.apache.ftpserver.usermanager.impl.BaseUser;
import org.apache.ftpserver.usermanager.impl.WritePermission;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* @author Marinda
* @date 2023/4/8 14:06
* @description FTP连接
*/
public class FtpClient {
private String userName;
private String passWord;
private int port;
private String dir;
private String host;
List<Authority> authorityList = new ArrayList<>();
private FtpServerFactory ftpServerFactory = new FtpServerFactory();
public FtpClient(String userName,String passWord,String host,int port,String dir){
this.userName = userName;
this.passWord = passWord;
this.port = port;
this.dir = dir;
this.host = host;
init();
}
public FtpClient(){
}
private void init(){
authorityList.add(new WritePermission());
}
/*
* @author Marinda
* @date 2023/4/8 14:08
* @description 开启服务
*/
public void start(){
try {
BaseUser baseUser = new BaseUser();
baseUser.setName(userName);
baseUser.setHomeDirectory(dir);
baseUser.setPassword(passWord);
baseUser.setAuthorities(authorityList);
ListenerFactory listenerFactory = new ListenerFactory();
listenerFactory.setPort(port);
listenerFactory.setServerAddress(host);
ftpServerFactory.addListener("default", listenerFactory.createListener());
ftpServerFactory.getUserManager().save(baseUser);
FtpServer ftpServer = ftpServerFactory.createServer();
ftpServer.start();
System.out.println("开启FTP服务");
}catch (Exception e){
e.printStackTrace();
}
}
}
main.java
FtpClient ftpClient = new FtpClient("Marinda","root","127.0.0.1",21,"D://");
ftpClient.start();
温馨提示
如果不需要日志仅仅想我一样搭建一个基础FTP服务的话就可以按需导入slf4j-nop 依赖。
如果有需要可以选择logback / log4这类自行配置,不过这样必须定义日志的实现
结束语
感谢你的观看!