如何在Apache Mina sshd-core版本0.14.0中覆盖getVirtualUserDir()

gih*_*han 3 java sftp apache-mina

我使用Apache Mina sshd-core版本0.10.0.由于文件上传的一些问题我不得不将版本更改为0.14.0.在那里我无法覆盖getVirtualUserDir()方法.以下是我的示例代码,

sshd.setFileSystemFactory(new NativeFileSystemFactory() {
        @Override
        public FileSystemView createFileSystemView(final Session session) {
            return new NativeFileSystemView(session.getUsername(), false) {
                @Override
                public String getVirtualUserDir() {

                    return "C:/root";
                }
            };
        };
    });
Run Code Online (Sandbox Code Playgroud)

我想知道如何在Apache Mina sshd-core版本0.14.0中克服这个问题.谢谢.

Mar*_*ryl 6

getVirtualUserDirMina SSHD 0.10.0 的目的是设置文件系统的初始目录.

在Mina SSHD 0.14.0中current,NativeFileSystemView构造函数的参数提供了相同的目的:

public NativeFileSystemView(String userName, Map<String, String> roots, String current)
Run Code Online (Sandbox Code Playgroud)

请注意,文档声称不直接调用构造函数NativeFileSystemFactory而是使用.但是NativeFileSystemFactory永远不会调用构造函数的重载.评论已过时或工厂尚未完成.

或者它是一个错字,它应该实际上提到VirtualFileSystemFactory.你可能应该使用什么工厂而不是覆盖NativeFileSystemFactory.

sshd.setFileSystemFactory(new VirtualFileSystemFactory("C:/root"));
Run Code Online (Sandbox Code Playgroud)