SFTP无法处理名称中包含星号的文件

时间:2014-09-15 10:07:07

标签: java sftp

我有关于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

由于 元帅

2 个答案:

答案 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);
}