我正在尝试创建自定义sftp服务器。到目前为止,我的代码:SshServer sshd = SshServer.setUpDefaultServer();
sshd.setPort(PORT_NUMBER);
sshd.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(Paths.get("keys/private_key.ppk")));
SftpSubsystemFactory factory = new SftpSubsystemFactory.Builder()
.build();
factory.addSftpEventListener(new BasicSftpEventListener());
sshd.setSubsystemFactories(Collections.singletonList(factory));
sshd.setShellFactory(new ProcessShellFactory("/bin/sh", "-i", "-l"));
sshd.start();
如您所见,我添加了自己的SftpEventListener:public class BasicSftpEventListener implements SftpEventListener {
@Override
public void removing(ServerSession session, Path path) throws IOException {
System.out.println("Removin");
}
@Override
public void removed(ServerSession session, Path path, Throwable thrown) throws IOException {
System.out.println("removed");
}
[这可行,当我想删除文件时,它将输出打印到控制台中,但是默认事件监听器也会被调用,例如,即使我只打印一些文本,默认事件监听器也会被调用并删除文件。
有没有一种方法可以阻止这种情况的发生?要停止执行默认的监听器(我找不到)?
感谢您的帮助!