我有关于SFTP的查询。 我使用sftp进行文件传输功能(在java调度程序中)。 该程序将使用sftp将文件从一个位置传输到另一个远程位置。 除了名称中包含星号的文件外,所有文件都已成功传输。 星号被视为sftp中的通配符。 但是,有没有办法配置sftp以便接受*并传输名称中包含星号的文件?
任何帮助都会很明显。
注意:
我使用com.zehon.sftp.SFTP
API作为SFTP客户端。
我在这个API中使用了以下方法:
public static int sendFile(java.lang.String localFilePath,
java.lang.String sftpDestFolder,
java.lang.String serverName,
java.lang.String username,
java.lang.String password)
throws FileTransferException
由于 元帅
答案 0 :(得分:0)
您需要使用反斜杠转义文件名,以免将星号解释为通配符; e.g。
String oldstring = "file*name";
String escaped = oldstring.replace("*", "\\*");
然后您使用escaped
代替oldstring
。大多数jsch ftp代码确实提到了操作的globbing,所以在使用代码时你必须要注意这一点。
答案 1 :(得分:0)
该功能的Zehon SFTP Javadoc并未提及有关尊重通配符的任何内容。您应该考虑将问题报告给它们作为错误(至少是文档错误)。
与此同时,你可以通过自己打开源文件,并使用带有inputStream的sendFile()
函数来解决它:
try (FileInputStream fis = new FileInputStream(theLocalFile)) {
SFTP.SendFile(fis, theRemoteName, theRemoteDir,
theRemoteServer, theRemoteUer, theRemotePass);
}