我的SFTP服务器上有两个文件
xyz07012014abc.txt
xyz06072014abc.txt
我有一个具有matchpattern的Java程序,如下所示:month =“07”and year =“2014”
matchPattern = "*" + month + "*" + year + "*";
上面的matchpattern获取了两个文件。但是,我只想要关注文件:
xyz07012014abc.txt
如何修改matchpattern以获得正确的结果。
修改
我正在使用以下java方法并将matchpattern提供给它。
private void getFilesFromFTP(String sftpBase, String matchPattern) throws JSchException, SftpException{
log.debug("Downloading reward files from FTP server...");
Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
JSch jsch = new JSch();
session = jsch.getSession(REWARDS_SFTP_USER, REWARDS_SFTP_SERVER, 22);
session.setPassword(REWARDS_SFTP_PASSWORD);
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.connect();
channel = session.openChannel("sftp");
channel.connect();
channelSftp = (ChannelSftp) channel;
channelSftp.cd(sftpBase);
Vector<ChannelSftp.LsEntry> list = channelSftp.ls(matchPattern);
for (ChannelSftp.LsEntry entry : list) {
channelSftp.get(entry.getFilename(), TEMP_DIRECTORY_PATH + entry.getFilename());
}
channel.disconnect();
session.disconnect();
}
答案 0 :(得分:0)
以下链接到Jsch JavaDoc:
它说:
ls
public Vector ls(String path)
throws SftpException
lists the contents of a remote directory.
Parameters:
path - a pattern relative to the current remote directory. The pattern can contain glob pattern wildcards (* or ?) in the last component (i.e. after the last /).
Returns:
a vector of ChannelSftp.LsEntry objects.
Throws:
SftpException
它要求您使用glob模式通配符。所以,我改变了我的通配符
matchPattern = "*" + month + "*" + year + "*";
到
matchPattern = "*" + month + "??" + year + "*";
问题已解决。
感谢大家的帮助。