【发布时间】:2014-10-19 13:15:33
【问题描述】:
我正在尝试使用 org.apache.commons.vfs2 通过 SFTP 下载文件。 问题是,密码包含“@”字符,所以这会导致 URI 被错误地解析:
org.apache.commons.vfs2.FileSystemException: Expecting / to follow the hostname in URI
有人知道如何解决这个问题吗? (显然,我无法更改密码)。这是我正在使用的代码:
String sftpUri = "sftp://" + userName + ":" + password + "@"
+ remoteServerAddress + "/" + remoteDirectory + fileName;
String filepath = localDirectory + fileName;
File file = new File(filepath);
FileObject localFile = manager.resolveFile(file.getAbsolutePath());
FileObject remoteFile = manager.resolveFile(sftpUri, opts);
localFile.copyFrom(remoteFile, Selectors.SELECT_SELF);
【问题讨论】:
-
再看看你的
sftpUri。如果您的密码包含@,remoteServerAddress参数会发生什么情况? -
正如我所说,我知道问题出在哪里(由于密码中的@,URI 解析不正确)。我的问题是如何解决它。
-
对不起。我没看到。看看stackoverflow.com/questions/6718471/…
-
这可能是一个愚蠢的问题,但是如何对密码进行编码?
-
您可以使用来自
java.net的URLEncoder.encode(...)。只对用户名和密码进行编码。
标签: java sftp apache-commons-vfs