java 访问远程主机,取文件

SFTPClient已经写好,要怎么只取出文件名中包含日期的文件(日期偏移量:1),求助

 Date date=new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.DATE,-1);//-1是昨天,1是明天
date=calendar.getTime(); 
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
String dateString = formatter.format(date); //这个可以得到昨天的日期,比如20171108

然后判断你的文件名

不知道你说的偏移量是什么意思,是指日期是文件名的开头么?

Vector v = channelSftp.ls(ftpFilePath);//遍历文件夹中的文件
Iterator it = v.iterator();
while (it.hasNext()){
LsEntry entry = (LsEntry) it.next();
SftpATTRS attrs = entry.getAttrs();
String fileName = entry.getFilename();//取出文件名称
//根据你实际文件中文件名称所包含的日期格式,判断该文件名称是否包含日期,
//如果包含,则使用channelSftp.get("SFTP服务器上文件的绝对路径", "要下载到本地的绝对路径"); 下载即可

        }

1.如果文件名中日期的偏移量固定,就先截取,然后用typeof判定是否是日期格式数据
2.如果偏移量不固定,可以考虑下泛型继承日期类

如果是考虑到偏移量为1,那就是说假如你要下载今天2017-11-09对应的文件,那你就下载文件名包含2017-11-08、2017-11-09,2017-11-10这几天的文件,这一步可以在程序处理,那就从sftp服务器获取这几天的文件,下载就可以了。
如果你的文件名有规律,那就更容易了

注意:必须要使用JDK 1.8.

参考.

 // 获取
        // LocalDate 只包含2010-10-10 这样的数据.
        LocalDate ld = LocalDate.now();// 获取当前日期.
        LocalDate nextDate = ld.plusDays(1); // 明天.
        LocalDate prevDate = ld.minusDays(1); // 昨天.

        System.out.println("今天(格式化的字符串,可以自己填):"+ld.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        System.out.println("明天(格式化的字符串,可以自己填):"+nextDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        System.out.println("昨天(格式化的字符串,可以自己填):"+prevDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
        // ----------END


        /*
         * 匹配.(这个可以使用JDK1.7或者JDK1.6,但我是基于JDK1.8写的)
         */
        // 下面这个正则表达式可以匹配:2010-1-1,或者2010-10-1或者2010-10-10这种的.
        Pattern pattern = Pattern.compile("\\d{4}-\\d{1,2}-\\d{1,2}");
        Matcher matcher = pattern.matcher("要匹配的字符串");
        if(matcher.find()) {
            // 有匹配.
        }