qq_39301527
2017-11-09 01:25
采纳率: 100%
浏览 2.1k
已采纳

java 访问远程主机,取文件

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

6条回答 默认 最新

  • blownewbee 2017-11-09 01:45
    已采纳
     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
    
    然后判断你的文件名
    
    点赞 打赏 评论
  • blownewbee 2017-11-09 01:31

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

    点赞 打赏 评论
  • 高冷的自卑患者 2017-11-09 01:40

    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服务器上文件的绝对路径", "要下载到本地的绝对路径"); 下载即可

            }
    
    点赞 打赏 评论
  • 深圳摆地摊er 2017-11-09 01:41

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

    点赞 打赏 评论
  • fuweihua123 2017-11-09 01:41

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

    点赞 打赏 评论
  • Q544471255 2017-11-09 02:20

    注意:必须要使用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()) {
                // 有匹配.
            }
    
    点赞 打赏 评论

相关推荐 更多相似问题