Java学习笔记 —— 使用Java快速搭建一个FTP服务

前言

最近考虑写一个类似 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这类自行配置,不过这样必须定义日志的实现

结束语

感谢你的观看!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇