apache ftpserver的使用(包含ftplet)

来源:互联网 发布:淘宝口红代购 编辑:程序博客网 时间:2024/05/21 10:27

需要用到的包

ftpserver-core-1.0.6.jar

ftplet-api-1.0.6.jar

mina-core-2.0.4.jar


package com.test;import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.apache.ftpserver.FtpServer;import org.apache.ftpserver.FtpServerFactory;import org.apache.ftpserver.ftplet.Authority;import org.apache.ftpserver.ftplet.FtpException;import org.apache.ftpserver.ftplet.FtpSession;import org.apache.ftpserver.ftplet.Ftplet;import org.apache.ftpserver.ftplet.FtpRequest;import org.apache.ftpserver.ftplet.FtpReply;import org.apache.ftpserver.ftplet.FtpletContext;import org.apache.ftpserver.ftplet.FtpletResult;import org.apache.ftpserver.ftplet.UserManager;import org.apache.ftpserver.listener.ListenerFactory;import org.apache.ftpserver.usermanager.PasswordEncryptor;import org.apache.ftpserver.usermanager.PropertiesUserManagerFactory;import org.apache.ftpserver.usermanager.impl.BaseUser;import org.apache.ftpserver.usermanager.impl.WritePermission;public class TestServerFactory2 {    public static void main(String[] args) {        FtpServerFactory serverFactory = new FtpServerFactory();        ListenerFactory factory = new ListenerFactory();        factory.setPort(1021);  // 端口号         serverFactory.addListener("default", factory.createListener());        PropertiesUserManagerFactory userManagerFactory = new PropertiesUserManagerFactory();        userManagerFactory.setFile(new File("D:\\00SysFile\\softdata\\lunaWorkspace\\ftpServer\\src\\users.properties"));//choose any. We're telling the FTP-server where to read it's user list        userManagerFactory.setPasswordEncryptor(new PasswordEncryptor(){                //We store clear-text passwords in this example            @Override            public String encrypt(String password) {                return password;            }            @Override            public boolean matches(String passwordToCheck, String storedPassword) {                return passwordToCheck.equals(storedPassword);            }        });                    //添加用户信息        BaseUser user = new BaseUser();        user.setName("test");        user.setPassword("test");        user.setHomeDirectory("d:/home/");        List<Authority> authorities = new ArrayList<Authority>();        authorities.add(new WritePermission());        user.setAuthorities(authorities);        UserManager um = userManagerFactory.createUserManager();        try{            um.save(user);//Save the user to the user list on the filesystem        }catch (FtpException e1){            //Deal with exception as you need        }        serverFactory.setUserManager(um);        Map<String, Ftplet> m = new HashMap<String, Ftplet>();        m.put("miaFtplet", new MyDefaultPortlet(){  // 自己建个MyDefaultPortlet类 extends DefaultFtplet            @Override            public void init(FtpletContext ftpletContext) throws FtpException {                System.out.println("*********init*********");                System.out.println("Thread #" + Thread.currentThread().getId());            }            @Override            public void destroy() {                System.out.println("*********destroy*********");                System.out.println("Thread #" + Thread.currentThread().getId());            }            @Override            public FtpletResult beforeCommand(FtpSession session, FtpRequest request) throws FtpException, IOException            {                System.out.println("*********beforeCommand*********");                System.out.println(session.getUserArgument() + ",session:" + session.toString() + ",getArgument:" + request.getArgument() + ", getCommand:" + request.getCommand() + ",getRequestLine:" + request.getRequestLine());                System.out.println("Thread #" + Thread.currentThread().getId());                                return FtpletResult.DEFAULT;//...or return accordingly            }                       @Override            public FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply) throws FtpException, IOException            {                System.out.println("*********afterCommand*********");                System.out.println("afterCommand " + session.getUserArgument() + ",session:" + session.toString() + ",getArgument:" + request.getArgument() + ", getCommand:" + request.getCommand() + ",getRequestLine:" + request.getRequestLine() + ",getMessage:" + reply.getMessage() + ",reply:" + reply.toString());                System.out.println("Thread #" + Thread.currentThread().getId());                return FtpletResult.DEFAULT;//...or return accordingly                            }        });                serverFactory.setFtplets(m);        Map<String, Ftplet> mappa = serverFactory.getFtplets();        System.out.println(mappa.size());        System.out.println("Thread #" + Thread.currentThread().getId());        System.out.println(mappa.toString());        FtpServer server = serverFactory.createServer();        try{            server.start();//Your FTP server starts listening for incoming FTP-connections, using the configuration options previously set        }catch (FtpException ex){            //Deal with exception as you need        }    }}


0 0
原创粉丝点击